1

我将得到一串看起来像这样的数字。

12 45

用空格分隔的两个整数。

输出将是 57。

我试过使用,

string numbersstream;
cin >> numbersstream;
istringstram twonumbers (numbersstream);
twonumbers >> a >> b;

但每次我运行它时,只有 a 是正确的,b 不是。

还有什么其他功能可以帮助我?或者这只是我遇到的一个编码问题?

我已经在答案中得到了两种建议。

getline(cin,numbersstream);

cin << a << b;

谢谢大家的时间。其他方法将不胜感激。

4

3 回答 3

4

问题在于您从 cin 输入的内容。使用operator>>以空格分隔。因此,如果用户键入“12 45”,则只会提取 12。您可以改用 getline :

getline(cin,numbersstream);
于 2011-09-10T04:54:06.247 回答
1

试试这个:

int main()
{
    int a;
    int b;

    std::cin >> a >> b;
    std::cout << a+b << "\n";
}

问题是在您的代码中:

cin >> numbersstream;

仅将一个空格分隔的单词(即 12)读入字符串numbersstream。因此,当您构建它时,twonumbers它实际上只有一个数字。因此它只设置'a'并且'b'未定义。

您可以按照自己的方式进行操作,但您真正需要的是将整行读入字符串:

std::getline(std::cin, numbersstream);
istringstram twonumbers (numbersstream);
于 2011-09-10T04:55:33.750 回答
1

您只阅读到第一个空格字符

cin >> numberstream;

以下内容会将所有内容读入字符串,直到读取分隔符('\n')或文件结尾。分隔符被丢弃。

getline(cin,numbersstream);
于 2011-09-10T04:56:27.090 回答