【问题标题】:String Truncated for Some Reason in C++ [duplicate]C++ 中的字符串因某种原因被截断 [重复]
【发布时间】:2014-08-05 23:15:57
【问题描述】:

所以,我刚开始使用 C++,但遇到了问题。我声明了一个字符串变量等等,但是当我输入给变量一个值,然后尝试显示它时,它只显示句子的第一个单词。

#include <iostream>
#include <string>

using namespace std;
using std::string;

int main()
{
        string answer;
        cout << "Give me a sentence and I will repeat it!";
        cin >> answer;
        cout << answer;
        return 0;
}

例如,我输入“Yay it working!”,它输出“Yay”

【问题讨论】:

  • cin 读取输入直到遇到空白。使用std::getline
  • cin &gt;&gt; answer; 请改用std::getline(cin,answer)。了解您的手册!

标签: c++ string input output


【解决方案1】:

std::cin 的分隔符是空格,所以它只占用了句子的第一个单词。就像@πάνταῥεῖ 所说,改用std::getline(cin,answer)

【讨论】:

  • 非常感谢!我很困惑!
【解决方案2】:

正如评论所解释的,cin 只会读取直到遇到第一位空白(在您的情况下,这似乎是一个空格)。相反,您可以使用std::getline,它会一直读取到指定的字符,或者默认返回:

std::string answer;
std::cout << "Give me a sentence and I will repeat it!";
std::getline(std::cin, answer):
std::cout << answer;

要让它读取到指定的字符如下所示:

char end_char = 'a';
std::getline(std::cin, answer, end_char);

【讨论】:

  • 非常感谢!我很困惑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多