如何从包含单词的文本文件制作两个数组

how to make two arrays from text file which contains words

本文关键字:数组 两个 文件 包含单 文本      更新时间:2023-10-16

>我有一个文本文件,如下所示:

cat dog
mom dad
is have
black ears
!stop
blah blah blah

我想将这些文本文件单词分成两个数组,所以我可以有 2 个数组; 一个包含

cat mom is black

和另一个

dog dad have ears

我想知道我该怎么办,因为我知道如何制作一个长数组,但不知道如何制作两个而且单词总是很短 - 比如不超过十个字符

唯一棘手的部分似乎是终止,例如,当行上只有一个单词时。一个简单的方法是读取行,然后解码它们,但相反,可以读取四个项目:在第一项和第二项之间不应有换行符,在第二项之后应该有一个换行符:

#include <iostream>
#include <fstream>
std::istream& noeol(std::istream& in) {
    for (int c; (c = in.peek()) != std::char_traits<char>::eof()
             && std::isspace(c); in.get()) {
        if (c == 'n') {
            in.setstate(std::ios_base::failbit);
        }
    }
    return in;
}
std::istream& eol(std::istream& in) {
    for (int c; (c = in.peek()) != std::char_traits<char>::eof()
             && std::isspace(c); in.get()) {
        if (c == 'n') {
            return in;
        }
    }
    in.setstate(std::ios_base::failbit);
    return in;
}
int main() {
    std::ifstream in("some.txt");
    std::vector<std::string> c0, c1;
    for (std::string s0, s1; in >> s0 >> noeol >> s1 >> eol; ) {
        c0.push_back(s0);
        c1.push_back(s1);
    }
}

显而易见的方法似乎是这样的:

std::vector<std::string> column1, column2;
std::ifstream in("filename.txt");
std::string a, b;
while (in >> a >> b) {
    column1.push_back(a);
    column2.push_back(b);
}