Как читать целые числа, разделенные запятыми и пробелами, в двумерный массив? - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть входной файл, который выглядит следующим образом:

3, 2, 5
2, 4, 9
6, 5, 9

И я сделал array[3][3].

Мой вопрос: как я могу прочитать это в моем массиве , пропуская пробелы и запятые?

Также: я не могу использовать stoi (у меня нет C ++ 11), и я еще не покрыл векторы.

I Я пробовал кодовый блок ниже, но мой результирующий массив полон нулей.

    string sNum;                     // Current number (as string)
    int num = 0;                     // Current number (as int)
    ifstream inFile;                 // Make input file stream
    inFile.open("Numbers.txt");      // Open my input file of 3x3 numbers

     while (getline(inFile, sNum, ',')) {                                 // Gets 'line' from infile ..
                                                                             // puts it in sNum .. 
                                                                             // delimiter is comma (the problem?).
        for (int rowCount=0; rowCount<3; rowCount++) {                    // Go through the rows
                for (int columnCount=0; columnCount<3; columnCount++) {   // Go through the columns

                        num = atoi(sNum.c_str());                         // String 'sNum' to int 'num'
                        array[rowCount][columnCount] = num;               // Put 'num' in array


                } // end columnCount for
        } // end rowCount for
    } // end while

Я думаю, что он читает в пробелах. Как я могу игнорировать пробелы в промежутках между получением моих целых?

1 Ответ

0 голосов
/ 16 февраля 2020

Вот одно из решений:

string sNum;                                                                                                                                                                     
int array[3][3];
int num = 0;                                                                                                                                                                        
    ifstream inFile;                                                                                                                                                                   
    stringstream ss;
    inFile.open("Numbers.txt");      // Open the input file of 3x3 numbers                                                                                                                                       
    int row = 0;
    int col = 0;
     while (getline(inFile, sNum)) {  // Gets entire line from inFile and stores in sNum                                                                                                             
        ss.str(sNum); //puts the line into a stringstream

        while(ss >> num)
        {
           if(col == 3) //handles our 2D array indexes.
                        //when col reaches 3, set it back to 0 and increment the row.
           {
              row++;
              col = 0;
           }

           array[row][col] = num;
           col++;

           //eliminate any commas and spaces between each number.
           while(ss.peek() == ',' || ss.peek() == ' ')
              ss.ignore();
        }
        ss.clear();
     } //        end while                                                                                                                                                                                      

}

...