Проблемы при кодировании, когда я читаю текстовый файл в массиве C ++ в CLion - PullRequest
0 голосов
/ 12 января 2020

Моя программа неправильно читает текстовый файл, я попытался исправить это двумя способами, я изменил кодировку в настройках и в правом нижнем углу Clion, но это не сработало.
Это мой код:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
    setlocale(LC_ALL, "rus");
    ifstream in("input.txt");
    in.open("input.txt");
    int a[3][3];
    if (in.is_open()) {
        while (!in.eof()) {
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    in >> a[i][j];
                }
            }
        }
    }
    for (int i = 0; i < 3; i++) {
        cout << " " << endl;
        for (int j = 0; j < 3; j++) {
            cout << a[i][j] << " ";
        }
    }
}

Это input.txt (он находится в той же папке, что и main. cpp is):
1 4 6
23 46 99
1 5 9
Это я получаю в качестве результата моей программы:
-858993460 -858993460 -858993460
-858993460 -858993460 -858993460
-858993460 -858993460 15016268
Процесс завершен с кодом выхода 0

Знаете ли вы, где может быть проблема?

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Сначала вы должны проверить результат операций, которые могут привести к сбою, которые помогают выяснить проблему. В вашем случае, setlocale (я сомневаюсь, что rus является допустимым именем локали) и операция ввода-вывода (вы тестируете открытие, но затем продолжаете предполагать, что загрузка происходит правильно).

Возможно, проблема в том, что CLion не запускает исполняемый файл из ожидаемой директории. В используемой конфигурации попробуйте установить в поле «Рабочий каталог» значение $PROJECT_DIR$.

0 голосов
/ 12 января 2020

Вы открываете файл дважды, удалите in.open("input.txt").

...