2016-11-27 147 views
0

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

3 
2 3 3 
4567 2939 2992 2222 0000 
+0

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

回答

1

使用ifstream的

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

为了能够按行读入行:

for(std::string line; getline(input, line);) 
{ 
//do what you want for each line input here 
} 
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; 
} 
1

试试这个:

#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; 
} 
+0

我拒绝了[你的一个编辑](http://stackoverflow.com/review/suggested-edits/14444577),最近你也遭到了类似的拒绝。请不要在问题中编辑其他人的代码!你永远无法知道你的具体编辑是否意外地解决了提问者的原始问题。如果有的话,坚持格式化和语法和标签。 (我在编辑的拒绝原因中写了很多,但我不确定你是否读过它。)谢谢。 –

+0

非常感谢。 –