【问题标题】:How do I read text from .txt file into an array?如何将 .txt 文件中的文本读入数组?
【发布时间】:2016-11-27 21:23:49
【问题描述】:

我想打开一个文本文件并完整读取它,同时使用 c++ 将其内容存储到变量和数组中。我在下面有我的示例文本文件。我想将第一行存储到一个整数变量中,第二行存储到一个 3d 数组索引中,最后一行存储到一个字符串数组的 5 个元素中。我知道如何打开文件进行读取,但我还没有学会如何读取某些单词并将它们存储为整数或字符串类型。我不确定如何在 c++ 中完成此操作,非常感谢任何帮助。

3
2 3 3
4567 2939 2992 2222 0000

【问题讨论】:

  • 这样的问题太多了。在互联网上搜索“stackoverflow c++ 读取文件数组”。

标签: c++ file text


【解决方案1】:

读取文本文件中的所有整数:

#include <fstream>

int main() {
    std::ifstream in;
    in.open("input_file.txt")
    // Fixed size array used to store the elements in the text file.
    // Change array type according to the type of the elements you want to read from the file
    int v[5];
    int element;

    if (in.is_open()) {
        int i = 0;
        while (in >> element) {
            v[i++] = element;
        }
    }

    in.close();

    return 0;
}

【讨论】:

    【解决方案2】:

    使用 ifstream

    std::ifstream input( "filename.txt" );
    

    为了能够逐行阅读:

    for( std::string line; getline( input, line ); )
    {
    //do what you want for each line input here
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      #include <iostream>
      #include <string>
      #include <fstream>
      
      int main()
      {
          std::ifstream file("filename.txt"); // enter the name of your file here
      
          int firstLine;
      
          int secondLine;
          const int X = 3;
          const int Y = 1;
          const int Z = 1;
          int ***arr3D;
      
          std::string myArray[5];
          std::string myString;
      
          if (file.is_open())
          {
              // store the first line into an integer variable
              file >> firstLine;
      
              // store the second line into a 3d array index
              arr3D = new int**[X];
              for (int i = 0; i < X; i++)
              {
                  arr3D[i] = new int*[Y];
      
                  for (int j = 0; j < Y; j++)
                  {
                      arr3D[i][j] = new int[Z];
      
                      for (int k = 0; k < Z; k++)
                      {
                          file >> secondLine;
                          arr3D[i][j][k] = secondLine;
                      }
                  }
              }
      
              // store the final line into 5 elements of a string array
              int i = 0;
              while (file >> myString)
              {
                  myArray[i] = myString;
                  i++;
              }
          }
      
          file.close();
      
      
          std::cout << firstLine << std::endl;
      
          for (int i = 0; i < X; i++)
          {
              for (int j = 0; j < Y; j++)
              {
                  for (int k = 0; k < Z; k++)
                  {
                      std::cout << arr3D[i][j][k] << std::endl;
                  }
              }
          }
      
          for (int i = 0; i < 5; i++)
          {
              std::cout << myArray[i] << std::endl;
          }
      
          return 0;
      }
      

      【讨论】:

      • 我拒绝了one of your edits,你最近也有类似的拒绝。请不要在问题中编辑他人的代码!您永远无法知道您的特定编辑是否意外地解决了提问者的原始问题。坚持格式和语法和标签,如果有的话。 (我在拒绝您的编辑原因中写了同样多的内容,但我不确定您是否阅读了它。)谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2014-04-06
      • 1970-01-01
      相关资源
      最近更新 更多