【问题标题】:Why does my std::getline invocation not work?为什么我的 std::getline 调用不起作用?
【发布时间】:2021-02-24 20:45:59
【问题描述】:

我是新来的,所以如果我没有很好地解释这个问题或其他什么,请原谅。这是我的代码,我正在尝试获取用户输入。问题是我想打印出用户所说的内容,即使它们包含间距。但是,我被困住了。这是我的代码......有什么想法吗?提前谢谢!

#include <iostream>
#include <string>

int main() {
    char name[200];
    std::cout << "What is your name? ";
    std::getline( std::cin, name );
    std::cout << "Welcome to CS adventures, " << name <<"!";
}

【问题讨论】:

    标签: c++ getline


    【解决方案1】:

    std::getline 需要 std::string,而不是字符数组。

    char name[200];
    

    应该变成

    std::string name;
    

    但学生程序员似乎受苦受难,因为教师往往有“否strings”规则。您可能需要使用std::istream::getline,因为它将接受字符数组。在这种情况下

    std::getline( std::cin, name );
    

    需要成为

    std::cin.getline( name, sizeof(name) );
    

    【讨论】:

    【解决方案2】:

    实际上,您的代码无法编译。 std::getline 需要 std::string,而不是 char *。

    以下代码可以正常工作:

    int main()
    {
        std::string line;
        std::cout << "What is your name? ";
        std::getline( std::cin, line );
        std::cout << "Welcome to CS adventures, " << line <<"!";
    }
    

    【讨论】:

      【解决方案3】:

      您必须使用getline,如下所示 std::cin.getline(name,sizeof(name)); 见this post

      【讨论】:

        【解决方案4】:

        您应该使用字符串类型作为名称变量。 "Getline(string)" 方法仅适用于字符串参数。这是一个例子:

        #include <iostream>
        #include <string>
        
            int main ()
            {
              std::string name;
            
              std::cout << "Please, enter your full name: ";
              std::getline (std::cin,name);
              std::cout << "Hello, " << name << "!\n";
            
              return 0;
            }
        

        【讨论】:

          猜你喜欢
          • 2013-09-10
          • 2015-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多