(C ++)字符串中用空格分隔的单独数字

时间:2016-11-21 23:50:00

标签: visual-c++

所以我的程序部分我遇到的问题是我需要用户输入一系列数字(数量取决于它们),每个数字用空格分隔,最后他们必须放入在字母'e'中表示他们已完成输入数字。将'e'合并到其中的唯一方法是通过确定字符串中的空格然后将所述数字放入向量中来制作输入字符串并分隔字符。我设法让它与char一起使用,但它然后输入任何数字,他们输入1位数。

Check = true;
cout << "Please enter data (0 - 25) with spaces followed by the letter 'e'.\n";
bool Error = false;
VectorSize = 0;
Data.resize(VectorSize);
int i = 0;
while (Error == false)
{
    cin >> CTemp;
    switch (CTemp)
    {
    case 'e':
        if (VectorSize != 0)
        {
            Error = true;
            break;
        }
        else
        {
            cout << "Please enter at least one value before 'e'";
            Check = false;
            break;
        }
    default:
        Temp = CTemp - 48;
        cout << Temp << endl;
        VectorSize++;
        Data.resize(VectorSize);
        if ((Temp > 25) || (Temp < 0))
        {
            Data[i].InputData(rand() % 26);
        }
        else
        {
            Data[i].InputData(Temp);
        }
        i++;
    }
}
return Check;

上面的代码是使用char的版本。我需要帮助在其中实现字符串。

1 个答案:

答案 0 :(得分:0)

没有足够的信息来确定代码中的InputDataVectorSize等内容。但是,如果我理解正确的问题,您需要使用空格作为分隔符进行标记。这样的事情应该有效:

#include <iostream>
#include <vector>
#include <sstream>
#include <string>
using namespace std;

int main()
{
    vector<string> vec;
    stringstream st("1 3 5 12 48 38 38 94 e");
    string temp;

    while(st >> temp)
        vec.push_back(temp);

    vec.pop_back(); //remove the 'e'

    for(auto s:vec)
        cout<<s<<endl;

    return 0;
}

请注意,此代码未验证输入(例如,我们不知道最后一个条目是否实际上是&#39; e&#39;)。