【问题标题】:C++ Loading information from text file into a 2D ArrayC ++将文本文件中的信息加载到二维数组中
【发布时间】:2015-01-20 01:57:48
【问题描述】:

我是一个非常新手的程序员,我遇到了一些问题。我需要使用存储在文本文件中的数据加载二维数组。文本文件内容如下(两个数字,然后是行尾。即 1 1949,然后是下一行):


1 1949

2 1972

3 1983

4 1959

5 1987

6 1991

7 1995

8 1991

9 1957

10 1980

1995 年 11 月

1995 年 12 月


数组的格式应该相同。当然不是在这里寻找答案,而是朝着正确的方向前进。我一直在寻找无济于事。谢谢。

【问题讨论】:

  • 欢迎来到 StackOverflow。您使用的是静态数组,还是使用 C++ 向量?
  • 这可能有助于您的搜索:“stackoverflow c++ 读取文件数组”
  • 你能解释一下文件格式吗?我不清楚您的示例输入代表什么矩阵。
  • @5gon12eder 我的理解是他必须将文件加载到 Nx2 矩阵中,并且结构与输入文件相同。
  • @user1231958 在这种情况下,我将使用静态数组。

标签: c++ arrays file file-io multidimensional-array


【解决方案1】:

这里我使用pair<int, int>来存储每一行​​;如果你有 C++11,你可以使用 array<int, 2> 代替。剩下的就是样板、读取和分割线。

#include <cassert>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char* argv[])
{
  assert(argc == 2);
  ifstream input(argv[1]);
  assert(input);

  vector<pair<int, int> > data;

  for (string line; getline(input, line); )
  {
    istringstream stream(line);
    data.resize(data.size() + 1);
    stream >> data.back().first >> data.back().second;
  }
}

【讨论】:

  • 为什么不直接使用data.push()
  • @user1231958:如果你创建一个临时的pair 来解析数字,你可以使用data.push_back()。如果您非常关心错误处理,那可能会更好。我写它的方式可能更有效,因为没有复制。
  • 只是一个建议,把代码解释一下会不会更好,因为OP是一个新手程序员?
  • @user1231958:如果 OP 有具体问题,我会很乐意回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
相关资源
最近更新 更多