LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Salve a tutti sono riuscito a creare un'editor di testo con c++ via console ed è uscito bn ma ho un problema ho creato con questo editor un file di testo con nome ciao.txt e dentro qnd lo stavo modificando ho inserito ciao come va?(come prova) ma quando me lo salva mi scrive solo "ciao" il testo dopo le spaziature non me lo scrive, vorrei sapere:
perchè mi fa questo scherzo.
E come risolverlo.
Grazie
|
|
vince92 (Normal User)
Rookie
Messaggi: 29
Iscritto: 18/11/2008
|
Come fai a leggere il testo inserito dall'utente nella console?
Presumo che tu faccia cin>>myvar ed myvar sia un oggetto di classe string. Se fai così è normale perchè quando cin è utilizzato con l'operatore di estrazione dallo stream, legge tutti i caratteri inseriti fino al primo spazio bianco. Per leggere tutta la stringa fino al carattere di nuova linea (cioè quando dai l'invio) usa getline().
Esempio:
Codice sorgente - presumibilmente C# |
#include <string> //la funzione getline si trova in questa libreria del C++ using namespace std; .... int main(){ ... string myString; .... getline(cin,myString); //legge i caratteri inseriti attraverso l'oggetto stream di input // standard cin finchè viene incontrato un carattere di linea nuova '\n', cioè quando dai // invio ... }
|
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da vince92:
Come fai a leggere il testo inserito dall'utente nella console?
Presumo che tu faccia cin>>myvar ed myvar sia un oggetto di classe string. Se fai così è normale perchè quando cin è utilizzato con l'operatore di estrazione dallo stream, legge tutti i caratteri inseriti fino al primo spazio bianco. Per leggere tutta la stringa fino al carattere di nuova linea (cioè quando dai l'invio) usa getline().
Esempio:
Codice sorgente - presumibilmente C# |
#include <string> //la funzione getline si trova in questa libreria del C++ using namespace std; .... int main(){ ... string myString; .... getline(cin,myString); //legge i caratteri inseriti attraverso l'oggetto stream di input // standard cin finchè viene incontrato un carattere di linea nuova '\n', cioè quando dai // invio ... }
|
|
Vorrei sapere come posso fare lo stesso lavoro con ubuntu...so già come si compila ma qnd faccio partire la compilazione mi da questo errore:
texto.c: In function ‘int main()’:
texto.c:10: error: invalid conversion from ‘void*’ to ‘char**’
texto.c:10: error: cannot convert ‘char*’ to ‘size_t*’ for argument ‘2’ to ‘__ssize_t getline(char**, size_t*, FILE*)’
texto.c:13: error: invalid conversion from ‘void*’ to ‘char**’
texto.c:13: error: cannot convert ‘char*’ to ‘size_t*’ for argument ‘2’ to ‘__ssize_t getline(char**, size_t*, FILE*)’
E il codice è questo:
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <fstream> #include <string> using namespace std; int main(){ char nome[20]; char testo[1001]; cout << "Inserisci nome file senza spaziature e con l'estensione: "; getline(cin, nome); ofstream salvatesto(nome, ios::out); cout << "Inserisci testo: " << endl; getline(cin, testo); salvatesto << testo; salvatesto.close(); return 0; }
|
Ultima modifica effettuata da LittleHacker il 08/09/2009 alle 22:16 |
|
vince92 (Normal User)
Rookie
Messaggi: 29
Iscritto: 18/11/2008
|
Prima avevo presupposto che utilizzassi le string della STL.
Nel programma che hai postato adesso hai utilizzato un vettore di caratteri.
L'errore sta nel fatto che getline come secondo parametro prende un reference di string, non un puntatore a char!!! Quindi devi dichiarare semplicemente le due variabili come string.
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { string nome,testo; cout<<"Inserisci nome file: "; getline(cin,nome); ofstream out(nome.c_str(),ios::out); cout<<"Inserisci testo: "<<endl; getline(cin,testo); out<<testo; out.close(); return 0; }
|
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da vince92:
Prima avevo presupposto che utilizzassi le string della STL.
Nel programma che hai postato adesso hai utilizzato un vettore di caratteri.
L'errore sta nel fatto che getline come secondo parametro prende un reference di string, non un puntatore a char!!! Quindi devi dichiarare semplicemente le due variabili come string.
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { string nome,testo; cout<<"Inserisci nome file: "; getline(cin,nome); ofstream out(nome.c_str(),ios::out); cout<<"Inserisci testo: "<<endl; getline(cin,testo); out<<testo; out.close(); return 0; }
|
|
Grazie mille per l'aiuto dato ciao a presto...
Scusa sapresti come avviare un'applicazione con C++ in ubuntu più che altro mi servirebbe eseguire un comando dato dal programma cioè:
Prendo il programma gli d'ho un comando e poi lo voglio eseguire(nel terminale) come posso fare?? Ultima modifica effettuata da LittleHacker il 09/09/2009 alle 14:12 |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
system("comando");
Come su windows.
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da manvb.net:
system("comando");
Come su windows. |
Ok ho fatto come mi hai detto tu xrò con una variabile stringa:
Codice sorgente - presumibilmente C/C++ |
string comando, ciao;
comando = "..";
comando += ciao
system(comando);
|
ma non va, mi genera un'errore:
compilatore.c: In function ‘int main()’:
compilatore.c:14: error: ‘system’ was not declared in this scope
Mi dai una mano |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Devi includere <cstdlib> e mettere:
using namespace std;
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da manvb.net:
Devi includere <cstdlib> e mettere:
using namespace std; |
Mi disp...mi da questo errore:
compilatore.c: In function ‘int main()’:
compilatore.c:15: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int system(const char*)'
Questo è il codice:
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> #include <cstdlib> using namespace std; int main(){ string percorso, nomefile, comando; cout << "Inserisci percorso intero: "; getline(cin,percorso); cout << "Inserisci nome file output: "; getline(cin,nomefile); comando = "g++ "; comando += percorso; comando += " -o "; comando += nomefile; system(comando); cout << comando << endl << "Compilato con successo!"; return 0; }
|
|
|