将字符串拆分为字符和整数 C++
split string into character and integer c++
我正在做一个小作业,其中一部分要求我将字符串拆分为整数和字符。然后将这些整数和字符存储在单独的向量中。例如,如果我输入“* + / 9 8 7”,我想将“*”、“+”和“/”存储在一个向量中,将 9、8 和 7 存储在另一个向量中。下面是我为这个程序写的代码
string InputString;
getline(cin,InputString);
stringstream ss(InputString);
vector<int>operands;
vector<char>operators;
char op;
int num;
while(ss>>op)
{
if((op=='+')||(op=='-')||(op=='*')||(op=='/'))
{
operators.push_back(op);
}
else
{
ss>>num;
operands.push_back(num);
}
}
for (unsigned int k = 0;k<operands.size();k++)
{
cout<<operands[k]<<" ";
}
cout<<endl;
for (unsigned int x = 0;x<operators.size();x++)
{
cout<<operators[x]<<" ";
}
问题是我的输出没有正确存储整数。我的字符存储正确(当我在第二个 for 循环中打印出整数向量的内容时,我只得到最后输入的数字)。我希望我的问题不会太混乱。我在 Whosebug
上找不到其他相关帖子
要恢复号码的所有数字,您必须 unget() 测试的字符。
在解析数字之前添加ss.unget();
,如下所示:
else
{
ss.unget(); // recover the op character
ss>>num;
operands.push_back(num);
}
我正在做一个小作业,其中一部分要求我将字符串拆分为整数和字符。然后将这些整数和字符存储在单独的向量中。例如,如果我输入“* + / 9 8 7”,我想将“*”、“+”和“/”存储在一个向量中,将 9、8 和 7 存储在另一个向量中。下面是我为这个程序写的代码
string InputString;
getline(cin,InputString);
stringstream ss(InputString);
vector<int>operands;
vector<char>operators;
char op;
int num;
while(ss>>op)
{
if((op=='+')||(op=='-')||(op=='*')||(op=='/'))
{
operators.push_back(op);
}
else
{
ss>>num;
operands.push_back(num);
}
}
for (unsigned int k = 0;k<operands.size();k++)
{
cout<<operands[k]<<" ";
}
cout<<endl;
for (unsigned int x = 0;x<operators.size();x++)
{
cout<<operators[x]<<" ";
}
问题是我的输出没有正确存储整数。我的字符存储正确(当我在第二个 for 循环中打印出整数向量的内容时,我只得到最后输入的数字)。我希望我的问题不会太混乱。我在 Whosebug
上找不到其他相关帖子要恢复号码的所有数字,您必须 unget() 测试的字符。
在解析数字之前添加ss.unget();
,如下所示:
else
{
ss.unget(); // recover the op character
ss>>num;
operands.push_back(num);
}