-2
我正在處理一個小的賦值,並且它的一部分需要我將字符串拆分爲整數和字符。這些整數和字符然後存儲在不同的向量中。例如,如果我輸入'* +/9 8 7',我想在另一個矢量中存儲'*','+'和'/',並將9,8和7存儲在另一個矢量中。下面是我爲這個程序寫的代碼將字符串拆分爲字符和整數C++
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]<<" ";
}
問題是我的輸出不能正確存儲整數。我的字符被正確存儲(當我在我的第二個循環中打印出整數向量的內容時,我只輸入了最後一個數字)。我希望我的問題不是太混亂。我無法在StackOverflow上找到其他相關文章
您是否嘗試過使用調試器?很容易找到它的錯誤。 – Danh
'while(ss >> op)'吃了數字的第一個字符。你必須把它放回去。 – user4581301
你會怎麼做? – VVSTITAN