【问题标题】:C++ string questionC++字符串问题
【发布时间】:2009-11-14 15:05:00
【问题描述】:

我有一个非常简单的问题。

string str;
cin >> str;
cout << str;

如果我输入“Hello World”,我得到的输出只有“Hello”。我知道这可能与空格有关。所以我的问题是,如果我也想要空格,我应该怎么写?

我也尝试过使用 getline(cin, str); 但它只会在第一次读取输入并跳过其余部分

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    getline(cin, str) 应该可以工作,但如果遇到“字符跳过”,您可能需要在调用它之前清除输入缓冲区:

    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
    std::string str;
    std::getline(std::cin, str);
    

    【讨论】:

      【解决方案2】:

      getline(cin, str) 是正确的方法。你是什​​么意思它只会在第一次读取输入并跳过其余部分?

      【讨论】:

      • 如果我在getline()之前先写一个cin;例如cin >> var1;获取线(cin,var2);它将获得 var1 的输入,但跳过 var2
      【解决方案3】:

      问题是,operator &gt;&gt; 在输入缓冲区中留下下一个空格/换行符/任何内容。所以如果你调用cin &gt;&gt; str后跟getline( cin, str ),getline操作会看到输入缓冲区的第一个字符是换行符,然后停止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-23
        • 2017-09-18
        • 2016-06-11
        • 2011-11-24
        相关资源
        最近更新 更多