以及!我有一个文本文件,包括一些整数值和非整数,如字符串和空格,所以我只想读取整数值,所以我使用整数向量,但当我读取文件时,操作是好的,但它似乎是第一个输入失败因此打破了循环!!!
这是我的主要例子:
ifstream in("file.txt");
if(in.fail())
cout << "opening failed!" << endl;
//opening is fine!
int value;
vector<int> v;
while(in >> value) // the problem here; it fails why?
{
cout << "ok"; // not printed
v.push_back(value);
}
cout << v.size() << endl; // 0??!!
这是file.txt的内容:
32 43 24 32
15 23
57
77 81
如果我制作一个字符向量,那就没关系,但我只想使用一个整数
***我已经使用过这样的代码并且工作正常但是现在我不知道发生了什么事了?!!!这真的是注释
任何帮助,评论,小费都欢迎和赞赏
答案 0 :(得分:0)
这一行:
while(in >> value)
虽然我可以阅读整数...
但在帖子中这可能不是真的 - 你没有处理这个案子。
读取非整数的东西并处理它。或者只是阅读字符串,然后决定做什么。
另外
cout << "ok"; // not printed
是因为它是缓冲的。
这样做
cout << "ok" << flush; // printed
答案 1 :(得分:0)
首先请原谅我用胡说八道的问题来烦你。最后我设法发现了错误:
在项目的主文件夹中我无意中创建了一个winrar文件input.rar
然后我没有将其删除但重命名为input.txt
我没关系,我手动打开它并删除了一些不可读的字符。然后我把整数上面的内容放在里面然后我的c ++应用程序成功打开它但无法读取它。
*现在我删除了input.txt
,input.rar
并创建了一个新的文档文本input.txt
,现在一切都很好!!!
感谢您的合作。这篇文章可能会帮助别人。
*不要创建rar
文件或其他格式,然后将它们重命名为文本文件并尝试通过c ++ fstream读取它们,因为它实际上会失败,它会产生容易出错,看起来无法解决