【问题标题】:Loading data from a file into a 1 dimensional array将文件中的数据加载到一维数组中
【发布时间】:2017-11-26 22:44:18
【问题描述】:

我对编码很陌生,我不完全确定如何做到这一点。我有一个用十六进制值填充的 .txt 文件。我需要加载这些值并将它们存储在 C 样式数组中,每个值用逗号分隔。该数组必须是一维的,因此如果要打印到命令行,所有值都将位于同一行。我已经看到了二维数组和使用 ifstream 的示例,但我似乎无法将这些值放入一维数组中。

我正在使用的 .txt 文件可以在这里找到:https://drive.google.com/open?id=1dhNf00jookFqxnBwFhuL9VGpAjvRV2Pm

感谢您的帮助。

【问题讨论】:

标签: c++ arrays file-handling


【解决方案1】:

要将值放入一维数组中,您只需在每次读取新值时追加到数组末尾即可。像这样的 std::vector :

#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
#include <iomanip>

int main()
{
  std::ifstream fin("HexFile.txt");
  std::string s;
  std::vector<int> result;
  while(fin >> s)
  {
     result.push_back(GetHex(s));
     std::cout << s << "   "  << GetHex(s) << "\n";
  }
  return 0;
}

GetHex 使用逗号从字符串中提取整数。如果确实需要使用 C 风格的数组,则需要读取文件两次,或者将输入的大小放在文件的顶部,因为在填充之前需要知道 C 风格的数组的大小出来吧。

【讨论】:

    【解决方案2】:

    要实现您的需要,您可以执行以下操作:

    std::fstream file("somefile.txt");
    std::string line;
    std::vector<int> lines;
    while(file >> line) lines.push_back(GetHex(line));
    int results[lines.size()];
    for(int i = 0; i<lines.size(); ++i) results[i] = lines[i];
    

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多