打开文件流输入的Getline问题
Getline issue with input of open file stream
我想弄清楚为什么这是打破了现在,因为我有它的工作,我不知道什么是错的。我正在尝试一个简单的getline从一个文件被打开,但是,编译器一直给我错误。我试过找有这些问题的人,但我没能找到有这个问题的人。任何建议吗?
void Foo::bar(ifstream &inputFile)
{
// Read in the data, parse it out, and
// call loadQueue
string input;
do {
getline(inputFile, input);
loadQueue(input);
}while (!(inputFile.eof()));
}
这是我得到的回报:
g++ -c -o Airworthy.o Airworthy.cpp
Foo.cpp: In member function ‘void Airworthy::readData(std::ifstream&)’:
Foo.cpp:25:27: error: no matching function for call to ‘getline(std::ifstream&, std::string&)’
Foo.cpp:25:27: note: candidates are:
In file included from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/string:55:0,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/bits/locale_classes.h:42,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/bits/ios_base.h:43,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/ios:43,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/ostream:40,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/iostream:40,
你知道是什么问题吗?
很可能您忘记了#include
所有必要的标准头文件。一种可能是:
#include <fstream>
或者你可能忘了:
#include <string>
您必须明确地#include
所有相关的标准标头,而不依赖于通过其他标头间接包含
正如Andy所说,您需要适当的include。有,但是,您的代码至少存在另外两个主要问题(1其中哪一个会影响你需要哪一个):
-
你应该永远(或几乎永远)通过
ifstream
作为一个函数的参数。除非函数要做anopen
或close
,你应该通过std::istream&
,这样它可以被任何istream
调用,而不仅仅是ifstream
。一旦你改变了这个,你需要包括
<istream>
,和不是<fstream>
。(<fstream>
包括<istream>
。还有很多 -
永远不要在
! inputFile.eof()
上循环。它不工作。在您的例子中,循环应该是while ( std::getline( inputFile, input ) ) {4 // ... }
它可以工作,几乎没有其他东西可以。
一般来说,
do...while
循环几乎总是错误的做输入;它会导致你处理输入,即使之后使用input
会失败getline
,但在测试getline
是否成功之前是一个错误)。而inputFile.eof()
的结果并非如此非常好的定义,直到输入失败。使用istream::eof()
控制循环几乎总是错误的
相关文章:
- 我在C++中使用 getline() 函数时遇到问题
- 使用getline读取.csv文件时出现问题
- 此C Getline函数的C 代码有什么问题
- 如何在 for 循环中解决潜在的 getline() 问题,数组的第一个索引没有显示?
- 使用getline的问题
- 找不到用户定义的 getline。自动扣款有问题?
- 我在使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们时遇到问题
- C++将csv读取到向量中,getline()问题
- 有人能解释一下getline和char的问题吗
- 用弦乐库解析行时的std :: getline问题
- C++:ifstream getline 问题交叉编译到 OpenWRT 发行版中
- getline() 函数的问题
- 使用getline函数时出现问题
- 使用 getline() 的字符串输入问题
- 注意:(getline不是问题所在)C++getline()停止在用户定义的函数中工作,但在主函数中工作
- 视觉C++ Getline 问题(没有重载函数"getline"实例
- 打开文件流输入的Getline问题
- Ifstream getline问题(它只读取第一行)
- c++中的Getline问题
- 真正解决'cin'和'getline'问题