我制作了这个简单的代码来尝试这个fstream file ("....txt")
,但文件保持空白!
有人可以帮忙吗?
(请注意,我有一个“自制”标题文件,其中包含我通常使用的所有文件和命名空间)
这个小程序应该从 File.txt 中输出所有内容,然后让你有机会在文件中键入新行,以打破你使用break的cin进度。但就像我说文件保持空白
#include <myHead.h>
int main()
{
string line;
int i;
fstream myFile ("File.txt");
if (myFile.is_open())
{
while (getline(myFile,line))
{
cout << line << "\n";
}
line = "0";
for(line;line!="break";cin >> line)
{
if(line != "break")
myFile << line;
}
myFile.close();
}
else
cout << "error, File.txt cannot be opened!";
getch();
return 0;
}
答案 0 :(得分:4)
读完文件后,文件处于“文件结束到达”的状态,这不是好。
您需要在写入(追加)之前重置流状态。这是使用流方法clear()
完成的。
此外,您可能希望显式打开文件作为输入和输出:ios::in | ios::out
。
答案 1 :(得分:0)
即使它已经回答了,我想指出一个更好的选择来结束输入。如果你这样做:
#include <string>
#include <iostream>
#include <fstream>
int main(void)
{
std::fstream file("file");
std::string buf;
if (file.is_open())
{
std::cout << "READ:" << "\n\n";
while (getline(file, buf))
{
std::cout << buf << "\n";
}
file.clear();
std::cout << '\n' << "WRITE:" << "\n\n";
while (getline(std::cin, buf))
{
file << '\n' << buf;
file.seekp(0, file.end);
file.seekg(0, file.end);
}
file.close();
}
else
{
std::cout << "error, file could not be opened.";
}
return 0;
}
您可以在Windows上按Ctrl+Z + Enter
或在UNIX上按Ctrl+D
来结束流。