字符串在C ++中因某些原因而被截断

时间:2014-08-05 23:15:57

标签: c++ string input output

所以,我刚刚开始使用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;
}

例如,我输入了#34;它是否有效!&#34;,它输出了&#34; Yay&#34;

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

正如评论所解释的那样,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);