【问题标题】:C++ - No matching function for call to 'getline'C++ - 调用“getline”没有匹配的函数
【发布时间】:2016-11-14 15:16:27
【问题描述】:

我无法找出文件 istream getline() 调用的正确语法

我已经尝试过使用各种不同类型的参数调用getline() 的多种变体,并且在查看了几个不同的文档之后,它就是行不通。

std::ifstream in("file.txt");
char tmp;
std::getline(tmp, in);

这个结果

../directory/file.cpp:178:2: error: no matching function for call to 'getline'
    std::getline(tmp, in);
    ^~~~~~~~~~~~

但是其他文档说

std::ifstream in("file.txt");
char tmp;
in.getline(tmp);

也吐出来

../directory/file.cpp:179:5: error: no matching member function for call to
  'getline'
    in.getline(tmp);
    ^~~~~~~~~~~~

我需要做的就是逐行读取文件,但我无法弄清楚。有人可以指出我正确的方向吗?如果需要,我可以提供更多信息。

【问题讨论】:

  • 你检查docs了吗?
  • 就我个人而言,当我遇到函数语法问题时,I look up the syntax online。您应该使用std::string 的函数形式。
  • @EdChum 我引用了这个cplusplus.com/reference/istream/istream/getline 现在检查你的资源
  • @ThomasMatthews 是的,如果我可以使用 std::string 会更容易,但根本问题是这是针对我的数据结构课程的,我必须构建自己的字符串。所以这是我试图为我的自制数据类型重载输入运算符
  • @conjenks 该页面没有提到任何将单个char 作为目标参数的重载。 (没有,因为将一整行读入一个字符没有意义。)由于这是课程作业,您现在应该已经涵盖了指针的概念,并且可能最近。

标签: c++ syntax parameters getline


【解决方案1】:

getline() 读取字符串,但您将其传递给单个字符。

像这样使用它:

std::ifstream in("file.txt");
std::string tmp;
std::getline(in, tmp);

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2018-10-09
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2020-10-21
    相关资源
    最近更新 更多