c++ - 阅读未知数量的单词

标签 c++ string std

<分区>

我想存储属于某个数字的名称,并将所有这些存储在一个数组中。我正在读取一个如下所示的文件:

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

我基本上想要一个数组数组,我在索引 1、2、3、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);
    }
}

附言索引将为 0、1、2、3。如果您确实需要它们为 1,2,3,4,请改用 std::map。

关于c++ - 阅读未知数量的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20460234/

相关文章:

c++ - 使用采用指向对象基类的函数在 shared_ptr 的 vector 上使用累积

c++ - 希望从 std::count 参数中排除行

c++ - 带有 std::vector 的 VBO

java - 如何找到以确切单词开头的字符串

java - 如何在特定索引处的字符串中添加换行符?

c++ - 从字母转换成单词

c++ - 寻找 std::boyer_moore_searcher

c++ - QTcpSocket - 检查是否已连接

c++ - __int64 的奇怪列表输出

c++ - 何时使用 std::size_t?