C ++'getline'没有重载函数的实例与参数列表匹配

时间:2019-10-14 21:26:18

标签: c++

尝试使用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;

2 个答案:

答案 0 :(得分:1)

std::getline()的第二个参数期望写入std::string,但是在两种情况下,您都传入了int。这就是您收到错误的原因-确实没有与您的代码匹配的std::getline()版本。

答案 1 :(得分:1)

getline的第二个参数应该是对std::string的引用,而不是对int的引用。

如果希望可以从多行中读取一对值,则可以使用:

while (fileOpening >>  lengthInput >>   widthInput)
{
   // Got the input. Use them.
}

如果您希望必须从每一行读取这对值,则必须使用其他策略。

  1. 阅读文本行。
  2. 处理每一行。
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?