如何读取控制台输入并将其存储到矢量字符串中

时间:2017-02-24 12:00:07

标签: c++ c++11

我正在尝试创建一个从控制台获取输入的程序,并读取由空格分隔的每个单词和数字,并将其存储在矢量字符串中以供进一步处理。

void foo() {
    string input;

    vector<string> list;




    while (getline(cin, input, ' '))
    {
        list.push_back(input);
    }

    for (int counter = 0; counter < list.size(); counter++) 
    {
        cout << list[counter] << endl;
    }

};




int main()
{

    foo();

    return 0;
}

当getline没有停止在换行符处读取并且你需要ctrl + z到EOF时出现问题。有没有让getline在换行线停止?

2 个答案:

答案 0 :(得分:1)

首先获取该行,然后使用istringstream提取其中的字符串。

string line;
getline(cin, line);
istringstream iss(line); //need <sstream>
vector<string> inputStrings;
for (string s; iss >> s; inputStrings.push_back(s));

答案 1 :(得分:0)

这种事情通常可以用标准库表达得更好:

#include <iterator>
#include <iostream>
#include <vector>

int main(int argc, char** argv) {
    std::vector<std::string> list;
    std::copy(std::istream_iterator<std::string>(std::cin),
            std::istream_iterator<std::string>(),
            std::back_inserter(list));
}