我将得到一串看起来像这样的数字。
12 45
两个用空格分隔的整数。
输出为57。
我尝试过使用,
string numbersstream;
cin >> numbersstream;
istringstram twonumbers (numbersstream);
twonumbers >> a >> b;
但是每次我运行它时,只有a是正确的,b不是。
还有哪些其他功能可以帮到我?或者这只是我的编码问题?
我在答案中已经提出了两种建议。
getline(cin,numbersstream);
和
cin << a << b;
谢谢大家的时间。其他方法将非常感激。
答案 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);