尝试使用getline,但错误不断: 没有重载函数的实例与参数列表匹配。
#include <iomanip>
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
int lengthInput;
int widthInput;
ifstream fileOpening;
fileOpening.open("testFile.txt");
while (!fileOpening.eof())
{
//ERROR ON NEXT TWO LINES OF CODE**
getline(fileOpening, lengthInput, ' ');
getline(fileOpening, widthInput, ' ');
}
system("pause");
return 0;
答案 0 :(得分:1)
std::getline()
的第二个参数期望写入std::string
,但是在两种情况下,您都传入了int
。这就是您收到错误的原因-确实没有与您的代码匹配的std::getline()
版本。
答案 1 :(得分:1)
getline
的第二个参数应该是对std::string
的引用,而不是对int
的引用。
如果希望可以从多行中读取一对值,则可以使用:
while (fileOpening >> lengthInput >> widthInput)
{
// Got the input. Use them.
}
如果您希望必须从每一行读取这对值,则必须使用其他策略。
std::string line;
while ( fileOpening >> line )
{
std::istringstream str(line);
if (str >> lengthInput >> widthInput)
{
// Got the input. Use them.
}
}
不使用
while (!fileOpening.eof()) { ... }
请参见Why is iostream::eof inside a loop condition (i.e. `while (!stream.eof())`) considered wrong?。