istringstream не работает, когда строка была взята как ввод с консоли, но работает с файлом - PullRequest
0 голосов
/ 02 ноября 2011

Вот код, который я использую для чтения ввода с консоли.Он читает первую строку, используя строковый поток, он также считывает слова из этой строки, но сразу после этого происходит сбой.

То же самое работает с файлом, если вместо стандартного ввода я беру ввод из файла.Тогда тот же код работает без сбоев.Я не могу понять, в чем проблема.

int main()
{
    string line;

    set<string> dict;
    vector<string> file;
    vector< vector<string> > message;

    while(true)
    {
        getline(cin,line);
        if(line.at(0) == '/' && line.at(1) == '/')
            break;
        else
            dict.insert(line);
    }
    int i =0;
    istringstream stream;
    while(true)
    {   
        getline(cin,line);
        cout<<line<<endl;
        stream.str(line);
        string words;
        while(stream >> words)
        {
            message[i].push_back(words);
            cout<<words<<" ";
        }
        cout<<"Reached out of the first loop"<<endl;
        i++;
    }

    cout<<"The dictionary input is"<<endl;
    set<string>::iterator it;
    for(it = dict.begin();it!=dict.end();it++)
        cout<<*it<<endl;
    cout<<endl;

    int vec_size = message.size();
    for(i = 0;i<vec_size;i++)
    {
        int inner_size = message[i].size();
        for(int j= 0;j<inner_size;j++)
            cout<<message[i][j]<<" ";
        cout<<endl;
    }

    system("pause");
    return 0;
}

Я даю ввод в виде

// dict string1 string2 string3 // message 12345 67 xc23 bgv34 090ds 3ndlk

Я хочу прочитать слова перед // сообщением в набор строк и слова после // сообщения в двухмерный вектор, где каждая строка содержит слова, которые были добавлены в первой строке

ЕслиЯ беру этот ввод из файла, тогда он работает правильно, но не с вводом из консоли.

1 Ответ

0 голосов
/ 02 ноября 2011

Я думаю, вы должны были использовать ostringstream. Вставьте в него материал и, наконец, создайте из потока std :: string, что вы и хотите здесь сделать.

...