2014-12-07 4 views
0

im пытается прочитать txt-файл в моем массиве char [9] [9]. Я пробовал некоторые советы из других тем, но они не работали.Чтение txt-файла в массив char

Итак, у меня есть пример file.txt, как это, что я спасся, как это: это 9x9

123------ 

---456--- 

------789 

и так далее, пробелы здесь «» вместо «-». Когда я пытаюсь прочитать его, и положил его в свой массив снова, она отображается следующим образом:

123456789.

Вот мой код:

system("cls"); 
ifstream sudoku_read; 
string name_read; 

cout << "Put a text name: " 
getline(cin, name_read); 
sudoku_read.open(name_read, ios::in | ios::binary); 

for (int i = 0; i < 9;i++) 
{ 
    for (int j = 0; j < 9; j++) 
    { 

     sudoku_read >> tab[j][i].number; 

    } 
} 

Я попытался noskipws также, но он работает неправильно.

+0

Использование 'getline' и не' '>>. –

+0

Как использовать getline для массива char? Я много пробовал, и я понятия не имею, как это должно быть сделано. – pkk

+0

Читайте в std :: string, а затем передайте в массив символов, если вам нужно. –

ответ

0
char crs[100]; 
unsigned vindex = 0; 
std::stringstream ss; 
ss = sudoku_read.rdbuf(); 
std::string flstr = ss.str(); 
for(int i=0; i<strlen(flstr); i++){ 
    if(flstr[i] != ' '){ 
     crs[vindex++] = flstr[i]; 
    } 
} 
vindex = 0; 
for (int i = 0; i < 9;i++) 
{ 
    for (int j = 0; j < 9; j++) 
    { 
     tab[j][i].number = crs[vindex++] - '0'; //watch out it should be [i][j] by convention 
    } 
} 

У меня традиционно установлен размер crs до 100, поскольку он не указан.

Предположения:

  • У вас есть достаточное количество номеров в файле, чтобы заполнить матрицу
  • Вы потворствовать с помощью stringstream и cstring
+0

и есть ли другая возможность, а не использовать векторы, у меня нет опыта с этим, и я не должен использовать его сейчас, и мой университетский преподаватель запрещает это пока. – pkk

+0

Я обновил его – Gabe

+0

'sudoku_read.rdbuf(). Str();' не компилируется –

Смежные вопросы