0
我的代碼允許用戶輸入數字,對它們進行排序並按順序輸出。擺脫空白(C++)
示例輸入:25,1,3-6
輸出示例:1,3,4,5,6,25
然而,當用戶輸入類似2 5,1,3-6
,並且如果在像3 - 6
的情況下的空間,程序不工作。
我用cin>>ws;
試圖擺脫空白,但它不工作。
這裏是(有一些其他的功能,我不包括,除非他們似乎對這個問題的來源)與此問題相關的代碼部分:
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
using namespace std;
void get_nums(vector<int>& num_vec);
int main()
{
int num1;
int num2;
cout << "\n Please, enter your HW: ";
vector<int> num_vec;
cin>>ws;
cout.flush();
do
{
cin>>ws;
cin>>num1;
num_vec.push_back(num1);
if(cin.peek() == ',')
{
cin.ignore();
}
else if(cin.peek() == '-')
{
cin.ignore();
cin>>num2;
for(++num1; num1<=num2; num1++)
{
num_vec.push_back(num1);
}
if(cin.peek() == ',')
{
cin.ignore();
}
}
}
while (cin.peek() != '\n');
cout<< "\n Do Problems: ";
for(int z=0; z<num_vec.size(); z++)
{
if(z+1==num_vec.size())
{
cout<<num_vec[z];
}
else if(z+2==num_vec.size())
{
cout<<num_vec[z]<<",and ";
}
else
{
cout<<num_vec[z]<<", ";
}
}
return 0;
}
試圖在這裏使用高級格式化的輸入操作只會使事情變得更加複雜。按字符分析這種輸入字符會容易得多。 –
'operator >>'在默認情況下已經忽略了空格,所以使用'std :: ws'是多餘的,除非你先使用'std :: noskipws'。 –