如果一个整数被输入到 StringStream 中,将它加倍并打印出来

If an integer is entered into the StringStream, double it and print it

我需要能够输入一个句子并让它吐出来。但是,如果句子中输入了一个数字,它应该与单词一起输出但必须加倍。

我已经尝试在我的代码中实现一个 if 语句,看看我是否可以检查是否输入了一个数字,如果可以,则在流 *2 中打印出该值,但这不起作用,因为如果我先输入一个数字,然后输入一些文本,如果我不输入数字作为句子的第二个值,它只会打印输入的第一个单词。

#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>

using namespace std;

int main()
{
    string sentence;
    string word;
    float val=0;
    cout<<"Enter a sentence: ";

    getline(cin, sentence);
    stringstream ss;
    ss.str(sentence);

    while (ss >> word || ss >> val)
    {
        if (ss >> val)
        {
            cout << val * 2;
        }
        else
        {
        cout << word << endl;
        }
    }
    return 0;
}

如果我输入像 "I walked 2 times today" 这样的句子,那么它应该输出为:

I 
walked
4 
times today

但这只会输出为:

I

解决了这个问题,必须使用 ss.eof() 方法转到 StreamString 的末尾并停止,如果输入到字符串中的值是数字,它将被打印出来。当遇到某个 if 语句时,我的程序停止了。