- 4
- 0
- CPU
- Intel Core i7 - 4700HQ 2.40GHz
- RAM
- 16 GB
- GPU
- Nvidia GeForce 450M
- OS
- Windows 10 Home Edition 64bit
Sto cercando da ormai qualche ora di creare un programma in C++ che mi renda possibile scrivere su un file da me scelto e poi stampare ciò che vi è scritto.
Il codice, che metterò sotto, funziona quasi completamente, se non ché non riesco a scrivere una string in modo decente sul file, sul file.
Il codice è abbastanza rudimentale e semplice (tanto che come nome del file richiedo un char e non una stringa), il problema si pone quando si arriva a
Sapendo che quando uso cin>>s e cin>>b il programma, ovviamente, mi legge solo i caratteri fino al primo spazio e, invece, getline(cin, b) quelli dopo lo spazio, ho pensato di unire i due in modo da avere una stringa normale. Ovviamente ho sbagliato perché con cin>>b il programma mi salva dalla seconda parola presente, e con getline(cin, b), si salva solo ciò che viene dopo la seconda parola, ad esempio:
Frase » Il mio nome è Antonio.
cin >> s restituisce Il
cin >> b restituisce mio
getline(cin, b) restituisce nome è Antonio.
f << s << " " << b << "\n" restituisce sul file la frase Il__nome è Antonio. dove "__" (due underscore) rappresentano due spazi (che l'editor, ovviamente, mi trasforma in un solo spazio), per farvi capire.
Quindi mi rivolto a voi chiedendovi se esiste un moto per acquisire un'intera stringa da tastiera!
Grazie mille :)
Il codice, che metterò sotto, funziona quasi completamente, se non ché non riesco a scrivere una string in modo decente sul file, sul file.
Codice:
/* Prova di Scrittura su File */
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
cout << "\t--- Programma di Scrittura su File ---" << endl << endl;
char nome[50];
cout << "Inserire il nome del file che si vuole creare (non puo' contenere spazi ed ha una lunghezza massima di 50 caratteri, estensione compresa): ";
cin >> nome; //acquisizione nome del file
fstream f(nome, ios::app); //se il file non esiste viene creato, se esiste ogni aggiunta sarà posta alla fine del file
cout << "\n\n-- Il file " << nome << " e' stato aperto --" << endl << endl;
string s, b, a;
cout << "Inserisca la frase da riportare nel file " << nome << " senza andare a capo." << endl;
cin >> s; //la stringa viene salvata solo fino al primo spazio
cin >> b;
getline(cin, b);
f << s << " " << b << "\n"; //copio la stringa sul file
f.close(); //chiudo il file
f.clear(); //ripulita f in modo da poterla riutilizzare con un altro file, se necessario
cout << "\n\n-- Il file e' stato salvato correttamente --" << endl;
cout << "-- Stampa del file " << nome << " --" << endl << endl;
f.open(nome, ios::in);
while(f.good()) {
getline(f, a);
cout << a << endl;
}
return 0;
}
Il codice è abbastanza rudimentale e semplice (tanto che come nome del file richiedo un char e non una stringa), il problema si pone quando si arriva a
Codice:
cout << "Inserisca la frase da riportare nel file " << nome << " senza andare a capo." << endl;
cin >> s; //la stringa viene salvata solo fino al primo spazio
cin >> b;
getline(cin, b);
f << s << " " << b << "\n"; //copio la stringa sul file
Frase » Il mio nome è Antonio.
cin >> s restituisce Il
cin >> b restituisce mio
getline(cin, b) restituisce nome è Antonio.
f << s << " " << b << "\n" restituisce sul file la frase Il__nome è Antonio. dove "__" (due underscore) rappresentano due spazi (che l'editor, ovviamente, mi trasforma in un solo spazio), per farvi capire.

Quindi mi rivolto a voi chiedendovi se esiste un moto per acquisire un'intera stringa da tastiera!
Grazie mille :)
Ultima modifica: