从文本文件读取到char *数组

时间:2015-04-28 09:29:15

标签: c++ arrays char

如何使用下面的函数从文本文件中输入char *数组? 非常感谢。

char* data2[] = { 0 };

char ch;
fstream fin("../level_15.txt", fstream::in);
while (fin >> noskipws >> ch) {
    cout << ch ; // Or whatever
}

我正在尝试获得如下所示的结构数组:

char* data[] = {
                /// level 1
                "aaaaaaaaaaaaaa",
                "bbbbbbbbbbbbbb"
            };



cat example.txt
"aaaaaaaaaaaaaa",
"bbbbbbbbbbbbbb"

2 个答案:

答案 0 :(得分:3)

  std::ifstream fin("source.txt");
  // get pointer to associated buffer object
  std::filebuf* pbuf = fin.rdbuf();
  // get file size using buffer's members
  std::size_t size = pbuf->pubseekoff (0,fin.end,fin.in);
  pbuf->pubseekpos (0,fin.in);
  // allocate memory to contain file data
  char* buffer=new char[size];
  // get file data
  pbuf->sgetn (buffer,size);
  fin.close();

请参阅char * buffer包含您想要的内容。请注意,您应该在使用后释放创建的char *。

答案 1 :(得分:0)

代码下来,Link for more information and desc

#include <iostream> // library that contain basic input/output functions
    #include <fstream>  // library that contains file input/output functions
    using namespace std;

    int main()
    {
      int array_size = 1024; // define the size of character array
        char * array = new char[array_size]; // allocating an array of 1kb
        int position = 0; //this will be used incremently to fill characters in the array 

        ifstream fin("test.txt"); //opening an input stream for file test.txt
        /*checking whether file could be opened or not. If file does not exist or don't have read permissions, file
      stream could not be opened.*/
      if(fin.is_open())
        {
        //file opened successfully so we are here
        cout << "File Opened successfully!!!. Reading data from file into array" << endl;
        //this loop run until end of file (eof) does not occur
            while(!fin.eof() && position < array_size)
            {
                fin.get(array[position]); //reading one character from file to array
                position++;
            }
            array[position-1] = '\0'; //placing character array terminating character

        cout << "Displaying Array..." << endl << endl;
        //this loop display all the charaters in array till \0 
            for(int i = 0; array[i] != '\0'; i++)
            {
                cout << array[i];
            }
        }
        else //file could not be opened
        {
            cout << "File could not be opened." << endl;
        }
        return 0;
    }