回答
ifs.close();
ifs.open(newfilename);
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
這有幾個問題,包括使用'char *'代替'std :: string',不釋放'char *',不打開另一個文件(這是個問題),並且使用while(!ifs.eof())而不是'while(ifs >>) )'。還有一些不必要的事情。 – chris
這是C還是C++? –
你不應該在C++代碼中使用malloc。 – Borgleader
請考慮到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();
- 1. std :: istreambuf_iterator「peek」with std :: ifstream
- 2. bool(std :: ifstream)!= std :: ifstream :: good()是什麼實際情況?
- 3. 使用std :: ifstream的,的std :: istream_iterator和std ::複製不讀書整個文件
- 4. 試圖使std :: ifstream再次打開
- 5. 阻止讀取std :: ifstream
- 6. Windows std :: ifstream :: open()問題
- 7. 從IStream讀入std :: ifstream
- 8. 閱讀整個std :: ifstream堆
- 9. 的std :: ifstream的::打開()不工作
- 10. std :: ifstream :: read或std :: ofstream ::用零參數寫入?
- 11. std :: ifstream開頭的字符是什麼?
- 12. std :: ios ::二進制或std :: ifstream ::二進制和類似的?
- 13. 關於ifstream:錯誤'std :: ios_base :: ios_base(const std :: ios_base&)'是私人的
- 14. 無法使用std :: getline()與ifstream和ofstream一起工作
- 15. 將std :: ifstream讀入行向量
- 16. std :: ifstream初始化文件名
- 17. std :: ifstream在Xcode 5中拋出錯誤
- 18. 是std :: ifstream線程安全和無鎖?
- 19. std :: ifstream/FILE *可以改變大小嗎?
- 20. 嘗試從函數返回std :: ifstream
- 21. C++:無法從'std :: ifstream'轉換爲'char *'
- 22. 無法將std :: ifstream與std :: string進行比較
- 23. 爲什麼std :: ifstream構造函數不接受std :: string?
- 24. 將windows shell IStream轉換爲std :: ifstream/std :: get_line
- 25. 試圖在std :: cout和std :: ifstream之間切換
- 26. 如何使用ifstream
- 27. 使用ifstream的等價fread
- 28. 在C++中使用ifstream的
- 29. std :: ifstream :: open()在Windows 10通用應用程序中失敗
- 30. 使用std :: ifstream的陣列中的結構數據類型的成一個std ::矢量
你自己說:'ifs.open()'。 – chris
如何給一個新的文件名? – rajat
@rajat - 'ifs.open(newfilename)' – Benj