-7

How could put input to char* array from the text file using function below? Many thanks.

char* data2[] = { 0 };

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

I am trying to get an array of structure like this below:

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



cat example.txt
"aaaaaaaaaaaaaa",
"bbbbbbbbbbbbbb"
πάντα ῥεῖ
  • 83,259
  • 13
  • 96
  • 175
hackForLife
  • 134
  • 2
  • 10

2 Answers2

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();

see char* buffer contains what you want. Note that you should free up the created char * after use.

ANjaNA
  • 1,334
  • 2
  • 15
  • 28
  • Thank you, this seems to be 1D array. Could I make 2D array, like this: "aaaaaaaaaaaaaa", "bbbbbbbbbbbbbb" instead of "aaaaaaaaaaaaaa"bbbbbbbbbbbbbb – hackForLife Apr 28 '15 at 10:26
  • @hackForLife new line can be identified as '\n'. you go through the char* and feed your 2D array line by line. – ANjaNA Apr 28 '15 at 10:36
0

Code down, 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;
    }
Community
  • 1
  • 1
Ibrahim Sušić
  • 408
  • 3
  • 18