我从文本文件中获取这些单词,每个文本文件用' \ t'空间。
我希望能够在单独的行中打印这些单词
例如: 这些是文本文件中的单词:
hel lo im carlos
我想要的结果:
hel lo
im
carlos
我得到的结果:
hel lo
im
这里是代码:
string ReadString(ifstream &file){
char buf[1024];
file.getline(&(buf[0]), 1024, '\t');
return string(buf);
}
main(){
ifstream delimfile("new.txt");
while(1){
string words = ReadString(delimfile);
if(delimfile.eof()==true)
break;
cout << words << endl;
}
delimfile.close();
}
感谢所有帮助
答案 0 :(得分:4)
您的上一次读取将一直读到文件末尾(因为没有\t
命中它)并设置EOF位。然后测试EOF位是否设置并退出循环。更改条件以检查delimfile.fail()
会解决此问题(因为当读取实际失败时设置fail
)。
您还可以将单词的输出移到条件上方,但这假定从文件中读取数据有效,这是编写代码的一种不好的方法。同样,在文件末尾添加一个额外的选项卡可以使您的代码正常工作,但只能避免此问题。
但是,如果我打算自己编写,我会这样写:
while (std::getline(file, words, '\t')) {
cout << words << endl;
}
答案 1 :(得分:1)
试试这个:
while(1)
{
string words = ReadString(delimfile);
cout << words << endl;
if(delimfile.eof()==true)
break;
//cout << words << endl;
}