如果一个整数被输入到 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 语句时,我的程序停止了。
我需要能够输入一个句子并让它吐出来。但是,如果句子中输入了一个数字,它应该与单词一起输出但必须加倍。
我已经尝试在我的代码中实现一个 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 语句时,我的程序停止了。