gpt4 book ai didi

c++ - ifstream object.eof() 不工作

转载 作者:行者123 更新时间:2023-11-30 01:01:22 26 4
gpt4 key购买 nike

我想我可能需要为我的 while 条件使用 bool 值 bValue = false:

char cArray[ 100 ] = "";
ifstream object;
cout << "Enter full path name: ";
cin.getline( cArray, 100 );
if ( !object ) return -1 // Path is not valid? This statement executes why?

ifstream object.open( cArray, 100 );

// read the contents of a text file until we hit eof.
while ( !object.eof() )
{
// parse the file here

}

为什么我不能输入文本文件的完整路径名?

可能是因为eof。它们的语法是可以模拟 eof 的 bool 语句吗?

我可以:

while ( !object == true )
{
// parase contents of file
}

最佳答案

请你和其他人注意,读取文本文件的正确方法不需要使用 eof()、good()、bad() 或 indifferent() 函数(好吧,我做了最后一个向上)。在 C 中也是如此(使用 fgets()、feof() 等)。基本上,这些标志只会在您尝试使用 getline() 之类的函数读取内容后设置。测试读取函数要简单得多,也更有可能是正确的,比如 getline() 实际上已经直接读取了一些东西。

未测试 - 我正在升级我的编译器:

#include <iostream>
#include <fstream>
#include <string>
using namespacr std;

imt main() {

string filename;
getline( cin, filename );

ifstream ifs( filename.c_str() );
if ( ! ifs.is_open() ) {
// error
}

string line;
while( getline( ifs, line ) ) {
// do something with line
}
}

关于c++ - ifstream object.eof() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com