如何从包含单词的文本文件制作两个数组
how to make two arrays from text file which contains words
>我有一个文本文件,如下所示:
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);
}
相关文章:
- 如何在C++中比较两个char数组
- 在c++中获取两个大int,并将它们存储在数组中
- 如何以优化的方式同时迭代两个间距不相等的数组
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 可以将两个相同类型的连续数组视为一个数组吗?
- C++递归来决定数组中的两个值
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- 在 char* 数组中添加两个索引
- 使用嵌套函数数组是个好主意吗?
- 链表数组(5 个队列)
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 动态分配一维结构数组:两种方法
- 指向数组第一个元素的指针的地址
- 用 std::valarray 替换 POD C 样式数组是个坏主意吗?
- OpenGL:两个顶点数组 + 两个索引数组
- c++多维数组多个数据类型
- 使用C++AMP处理大型数组(65536+个元素)
- 在c++中使用MKL函数初始化数组是个好主意吗?