c++ - 将两列的文件读入一个数组

标签 c++

我有一个非常基本的问题。我正在尝试从这样保存数据的文件中读取:

Collins, Bill
Smith, Bart
Allen, Jim
.
.
.
Holland, Beth

我希望我的代码读取数据并将它们保存到数组的一列中。所以我所做的是,

#include<iostream>
#include<string>
#include<cstring>
#include<iomanip>
#include<fstream>

using namespace std;

int main()
{
string first, last, FIRST[200], LAST[200];

ifstream infile;
infile.open("names.dat");

while (!infile.eof())
{
for (int i = 0; i < !infile.eof(); i++)
{
    infile >> first;
    FIRST[i] = first;
    cout << FIRST[i] << " ";

    infile >> last;
    LAST[i] = last;
    cout << LAST[i] << " " << endl;
    }
}
return 0;
}

但是,我只需要一个名为 NAME[] 的数组,而不是两个(FIRST[] 和 LAST[])。所以基本上,如果我调用 NAME[0],那就是柯林斯,比尔。

我真的不知道该怎么做...阅读资料让我更加困惑..

这只是我必须编写的整个程序的一小部分,它按字母顺序对名称进行排序,我什至还没有通过这个阶段。

最佳答案

您可能只阅读每一行:

#include<iostream>
#include<fstream>
#include<deque>

int main()
{
    std::deque<std::string> names;
    std::ifstream infile("names.dat");
    std::string name;
    while(getline(infile, name))
        names.push_back(name);
    return 0;
}

EOF 测试通常不是对成功输入的测试。这里是getline返回流和条件 while(stream)正在测试流状态。

关于评论:

有一个#include<algorithm>std::sort(names.begin(), names.end());

关于c++ - 将两列的文件读入一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890416/

相关文章:

c++ - 以编程方式确定 Qt 样式表选项?

c++ - 使用可变参数模板指定友元类

c++ - 从构造函数抛出后调用析构函数

c++ - 在C++中的10x10数组中生成特定数量的多个随机字符

c++ - 按值返回指针不会 move 对象

c++ - 确保 VS 2008 将我的项目视为 C++ 而不是 C++/CLI

c++ - Opencv - 释放内存将 cv::Mat refcount 更改为零

c++ - 构造 vector C++ 后无法释放指针

c++ - 如何检查输入的长度? (C++)

c++ - 从类方法清除raylib中的背景会使窗口闪烁