我有一个文件可以打开(是的,它打开)该文件,但无法从中获取任何内容。
使用
ifstream
打开文件,因为我只需要这样读取文件:
string line;
ifstream text;
text.open("input.txt", ios::trunc | ios::in | ios::out | ios:: binary);
while 循环写成这样:
while (getline(text, line)) {
我怀疑这与
while
循环的条件有关,但我不知道问题所在
我有一段代码指示文件是否已打开:
if (text)
{
cout << "File can be opened" << endl;
exit(1);
}
并且它总是输出
File can be opened
,没有其他错误消息。
我应该怎么做才能解决这个问题?
该文件与源代码位于同一文件夹中。我尝试添加文件路径,但仍然不起作用。
当您使用
std::ifstream
时,您会自动获得一个 input 文件。但是,如果您在输入文件上使用 std::ios::trunc
,则该文件在打开时会被 截断,这意味着文件的内容在您有机会读取之前已被删除。 (此处有开放模式标志的文档。)
一般来说,仅指定更改默认行为绝对需要的标志。对于 input 流,可以是:
std::ifstream f( filename )
以文本模式打开文件,或者std::ifstream f( filename, std::ios::binary )
以二进制模式打开文件。一如既往,定期参考文档。