2012-10-20 87 views
-2

我打開使用文件,使用std :: ifstream的

std::ifstream ifs(filename); 

我想打開使用相同IFS變量一個新的文件打開一個新的文件,我該怎麼做呢?

+0

你自己說:'ifs.open()'。 – chris

+0

如何給一個新的文件名? – rajat

+0

@rajat - 'ifs.open(newfilename)' – Benj

回答

3
ifs.close(); 
ifs.open(newfilename); 
0
 ifs.close();  //close the previous file that was open 
     ifs.open("NewFile.txt", std::ios::in); //opens the new file in read-only mode 

     if(!ifs)        //checks to see if the file was successfully opened 
     { 
      std::cout<<"Unable to read file...\n"; 
      return; 
     } 

     char* word = new char[SIZE]; //allocate whatever size you want to 
     while(ifs>>word)  
     { 
      //do whatever 
     } 
     ifs.close();   //close the new file 
     delete[] word;   //free the allocated memory 
+1

這有幾個問題,包括使用'char *'代替'std :: string',不釋放'char *',不打開另一個文件(這是個問題),並且使用while(!ifs.eof())而不是'while(ifs >>) )'。還有一些不必要的事情。 – chris

+0

這是C還是C++? –

+0

你不應該在C++代碼中使用malloc。 – Borgleader

1

請考慮到std::ifstream.close()不清除它的標誌, 可能包含從上次會話值。在與其他文件一起使用流之前,請始終使用clear()函數清除標誌。

例子:

ifstream mystream; 
mystream.open("myfile"); 
while(mystream.good()) 
{ 
    // read the file content until EOF 
} 
mystream.clear(); // if you do not do it the EOF flag remains switched on! 
mystream.close(); 

mystream.open("my_another_file"); 
while(mystream.good()) // if not cleared, this loop will not start! 
{ 
    // read the file 
} 
mystream.close(); 
相關問題