【问题标题】:error: no matching function for call to 'getline'错误:没有匹配的函数调用“getline”
【发布时间】:2020-02-17 17:26:11
【问题描述】:
#include<iostream>
#include<string>
using namespace std;
int main(){
    //initializing two string

     string s2,s1="hello";

     cout<<s2<<s1;

     cout<<endl;
     //transferring(copying) data from s1 to s2 
       getline(s1,s2);

     cout<<s2<<s1;
}

【问题讨论】:

  • 您是在猜测getline 的工作原理还是在参考一些参考资料?
  • 这个错误有什么不清楚的地方?没有采用 2 个 std::string 参数的 std::getline 函数。如果您想做您在评论中所写的内容:“将数据从 s1 传输(复制)到 s2”,简单的s2 = s1; 就可以做到。
  • 听起来你可以使用good C++ book
  • 另外,正如所写,您只初始化一个字符串s1="hello"。要将它们都初始化为“hello”,您可以编写 std::string s1="hello", s2="hello";
  • 有人能解释一下在 getline(cin,str) 期间发生的事情吗,我假设根据它,来自 cin 流的内容被传输到 str。我是对还是错?

标签: c++ header getline


【解决方案1】:

错误是因为没有getline 可以接受两个字符串作为参数。

将数据从s1“传输”或复制到s2你写

s2 = s1;

尚不清楚您为什么认为需要getline。方法getline 用于不同的目的,您可以阅读例如here

【讨论】:

    【解决方案2】:

    你使用getline错误,请看一下:http://www.cplusplus.com/reference/string/string/getline/

    getline 函数采用 2 个参数(一个 Istream 和一个字符串,而不是字符串的两倍),这就是您收到错误的原因。

    如果你只是想复制一个字符串,你可以使用下面的代码:

    std::string s1 = "myString";
    std::string s2 = s1;
    

    【讨论】:

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