如何在char []中用空格分隔两个整数?

时间:2011-09-10 04:47:32

标签: c++ istringstream

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

12 45

两个用空格分隔的整数。

输出为57。

我尝试过使用,

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

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

还有哪些其他功能可以帮到我?或者这只是我的编码问题?

我在答案中已经提出了两种建议。

getline(cin,numbersstream);

cin << a << b;

谢谢大家的时间。其他方法将非常感激。

3 个答案:

答案 0 :(得分:4)

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

getline(cin,numbersstream);

答案 1 :(得分: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);

答案 2 :(得分:1)

您只能在第一个空格字符

之前阅读
cin >> numberstream;

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

getline(cin,numbersstream);