读未知数量的单词

时间:2013-12-08 22:51:19

标签: c++ string std

我想存储属于某个数字的名称,并将所有这些存储在一个数组中。我正在读一个看起来像这样的文件:

1 Alan Ed
2 Eric Sara Lisa Dave
3 Amanda
4 Trevor Juliet Brad

我基本上想要一个数组数组,其中我在索引1,2,3,4处存储了一个名字数组。这是怎么做到的?我知道有几种方法,我正在寻找一个简单的方法。

1 个答案:

答案 0 :(得分:4)

std::getline()的输入解析为行字符串,将每个行字符串由std::strinstream的提取器解析为名称字符串,使用std::vector<std::string>::push_back()将名称字符串附加到行条目中,通过以下方式收集行条目另一个std::vector<std::vector<std::string>>

像这样,加减语法错误:

vector<vector<string>> result;
istream& is = cin;
while (!is.eof())
{
    string ls;
    getline(is, ls);
    istringstream line_ss(ls);
    result.emplace_back();
    while (line_ss.good())
    {
        string name;
        line_ss >> name;
        result.back().push_back(name);
    }
}

P.S。指数为0,1,2,3。如果确实需要它们为1,2,3,4,请改用std :: map。