如何在char[]中获得由空格分隔的两个整数

How to get two integers separated by space in a char[]?

本文关键字:分隔 整数 两个 空格 char      更新时间:2023-10-16

我将得到如下所示的一串数字。

12 45

两个用空格分隔的整数

输出为57.

我试过使用

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

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

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

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

getline(cin,numbersstream);

cin << a << b;

感谢大家的宝贵时间。

问题在于您从cin输入的内容。使用operator>>是用空格分隔的。因此,如果用户输入"12 45",则只提取12。你可以用getline来代替:

getline(cin,numbersstream);

试试这个:

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);

读取到第一个空白字符为止
cin >> numberstream;

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

getline(cin,numbersstream);