Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Scrivere anche le spaziature nel testo
Forum - C/C++ - Scrivere anche le spaziature nel testo

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 19:50
Martedì, 08/09/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
:k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
vince92 (Normal User)
Rookie


Messaggi: 29
Iscritto: 18/11/2008

Segnala al moderatore
Postato alle 20:30
Martedì, 08/09/2009
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#

  1. #include <string> //la funzione getline si trova in questa libreria del C++
  2. using namespace std;
  3.  
  4. ....
  5.  
  6. int main(){
  7. ...
  8. string myString;
  9. ....
  10. 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
  11. ...
  12. }


PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 22:15
Martedì, 08/09/2009
Testo quotato

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#

  1. #include <string> //la funzione getline si trova in questa libreria del C++
  2. using namespace std;
  3.  
  4. ....
  5.  
  6.  
  7. int main(){
  8. ...
  9. string myString;
  10. ....
  11. 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
  12. ...
  13. }



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++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main(){
  7. char nome[20];
  8. char testo[1001];
  9. cout << "Inserisci nome file senza spaziature e con l'estensione: ";
  10. getline(cin, nome);
  11. ofstream salvatesto(nome, ios::out);
  12. cout << "Inserisci testo: " << endl;
  13. getline(cin, testo);
  14. salvatesto << testo;
  15. salvatesto.close();
  16. return 0;
  17. }


come posso risolvere:-?:-?:k:

Ultima modifica effettuata da LittleHacker il 08/09/2009 alle 22:16


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
vince92 (Normal User)
Rookie


Messaggi: 29
Iscritto: 18/11/2008

Segnala al moderatore
Postato alle 23:37
Martedì, 08/09/2009
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++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.         string nome,testo;
  9.         cout<<"Inserisci nome file: ";
  10.         getline(cin,nome);
  11.         ofstream out(nome.c_str(),ios::out);
  12.         cout<<"Inserisci testo: "<<endl;
  13.         getline(cin,testo);
  14.         out<<testo;
  15.         out.close();
  16.         return 0;
  17. }


PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 13:38
Mercoledì, 09/09/2009
Testo quotato

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++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.         string nome,testo;
  9.         cout<<"Inserisci nome file: ";
  10.         getline(cin,nome);
  11.         ofstream out(nome.c_str(),ios::out);
  12.         cout<<"Inserisci testo: "<<endl;
  13.         getline(cin,testo);
  14.         out<<testo;
  15.         out.close();
  16.         return 0;
  17. }




Grazie mille per l'aiuto dato ciao a presto...:k:

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?? :k:

Ultima modifica effettuata da LittleHacker il 09/09/2009 alle 14:12


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:00
Mercoledì, 09/09/2009
system("comando");

Come su windows.


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 20:05
Mercoledì, 09/09/2009
Testo quotato

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++

  1. string comando, ciao;
  2. comando = "..";
  3. comando += ciao
  4. 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:hail:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:07
Mercoledì, 09/09/2009
Devi includere <cstdlib> e mettere:
using namespace std;


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 20:13
Mercoledì, 09/09/2009
Testo quotato

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++

  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. using namespace std;
  5. int main(){
  6. string percorso, nomefile, comando;
  7. cout << "Inserisci percorso intero: ";
  8. getline(cin,percorso);
  9. cout << "Inserisci nome file output: ";
  10. getline(cin,nomefile);
  11. comando = "g++ ";
  12. comando += percorso;
  13. comando += " -o ";
  14. comando += nomefile;
  15. system(comando);
  16. cout << comando << endl << "Compilato con successo!";
  17. return 0;
  18. }


:hail::hail:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo