C++ 将包含两列的文件读入一个数组

C++ 将包含两列的文件读入一个数组,c++,C++,我有一个非常基本的问题。我正试图从一个保存了如下数据的文件中读取数据: Collins, Bill Smith, Bart Allen, Jim . . . Holland, Beth 我希望我的代码读取数据并将它们保存到数组的一列中。所以我所做的是 #include<iostream> #include<string> #include<cstring> #include<iomanip> #include<fstream> us

我有一个非常基本的问题。我正试图从一个保存了如下数据的文件中读取数据:

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[]。所以基本上,如果我叫这个名字[0],我会叫柯林斯,比尔

我真的不知道怎么做。。。阅读资料使我更加困惑


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

只需使用二维数组,如下所示:

main.cpp

以上所述,我个人将使用STD::数组或C++中的一些更智能的容器类型,一般来说,

< P>使用二维数组,然后如下:

main.cpp

我说,我个人会使用C++中的STD::数组或一些更智能的容器类型。

< P>只使用一个字符串数组而不是两个数组。

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

   ifstream infile;
   infile.open("names.dat");
   int i = 0;

   while (true)
   {
      infile >> first;
      infile >> last;

      if (!infile.eof() && infile.good() )
      {
         NAME[i] = last + ", " + first;
         cout << NAME[i] << std::endl;
      }
      else
      {
         break;
      }
      ++i;
   }
   return 0;
}

只需使用一个字符串数组而不是两个

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

   ifstream infile;
   infile.open("names.dat");
   int i = 0;

   while (true)
   {
      infile >> first;
      infile >> last;

      if (!infile.eof() && infile.good() )
      {
         NAME[i] = last + ", " + first;
         cout << NAME[i] << std::endl;
      }
      else
      {
         break;
      }
      ++i;
   }
   return 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返回流和流测试流状态时的条件

关于评论:


具有include和std::sortnames.begin、names.end

您可以阅读每一行:

#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返回流和流测试流状态时的条件

关于评论:



具有include和std::sortnames.begin、names.end

那么,为什么不使用一个具有适当索引的2D数组呢!infie.eof@LaszloPapp非常喜欢名字[][]??@DieterLücking因为我觉得我需要做的是I