PDA

Visualizza la versione completa : [C++] Lettura di alcune righe di un file da ricopiare in un altro file


SquallZ20
28-01-2011, 17:52
ciao a tutti....allora io devo creare due file di testo.....dal primo file(dove introduco delle righe a caso) devo prendere le righe che cominciano con l'asterisco e ricopiare le righe nel secondo file......come posso fare? io ho gi scritto questo:


#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char *argv[]) {
string s,a;
cout<<"leggere delle righe da ricopiare in un altro file "<<endl;
fstream file1,file2;
file1.open("file1.txt",fstream::in);
while(file1.good()){
getline (file1,s);
cout<<s<<endl;
}
system("PAUSE");
return 0;




}

SquallZ20
28-01-2011, 17:57
ah dimenticavo....nel primo file ho inserito le righe dal blocco note......

SquallZ20
28-01-2011, 18:38
ho scritto questo fino a ad adesso ma non so come fare per copiare solo le righe che iniziano per asterisco


#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;

int main()
{
string s,a;
cout<<"leggere delle righe da ricopiare in un altro file "<<endl;
fstream file1,file2;
file1.open("file1.txt",fstream::in);
file2.open("file2.txt",fstream::out);
while(file1.good()){
getline (file1,s);
cout<<s<<endl;


file2<<s<<endl;}
cout<<"adesso copio le righe sul file2 "<<endl;

file2.close();
file2.open("file2.txt",fstream::in);
while(file2.good()){
getline (file2,a);
cout<<a<<endl;
}







system("PAUSE");
return 0;




}

shodan
28-01-2011, 18:46
Sai come prelevare un singolo carattere da una std::string?

SquallZ20
28-01-2011, 18:51
uhm...credo di no....potresti farmi un esempio? :stordita:

shodan
28-01-2011, 18:56
Basta usare [] (come per i normali array C).
L'importante che l'indice sia nell'intervallo: 0 <= Index < string::size().
Nel tuo caso specifico: 0 <= Index < s.size()
Detto questo per sapere se s inizia con un stringa basta un semplice: s[0] e per copiare le rghe con asterisco un semplice if.

SquallZ20
28-01-2011, 19:10
quindi....vediamo se ho capito.....inserisco un while(0<=Index && Index<s.size)
prima di copiare la stringa s nel file2 e all'interno del while inserisco una if(s[0]=='*')?.....scusa ma sono alle prime armi.... :bh:

SquallZ20
28-01-2011, 19:13
credo di aver risolto......


#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
int i;
string s,a;
cout<<"leggere delle righe da ricopiare in un altro file "<<endl;
fstream file1,file2;
file1.open("file1.txt",fstream::in);
file2.open("file2.txt",fstream::out);
while(file1.good()){
getline (file1,s);
cout<<s<<endl;
if(s[0]=='*'){
file2<<s<<endl;
}



}
cout<<"adesso copio le righe sul file2 "<<endl;

file2.close();
file2.open("file2.txt",fstream::in);
while(file2.good()){
getline (file2,a);
cout<<a<<endl;
}







system("PAUSE");
return 0;




}

SquallZ20
28-01-2011, 19:16
grazie per l'aiuto....

Loading