Считывание информации из файла С++

231
29 декабря 2018, 06:20

пишу программу, необходимо считывать информацию из txt файла и записывать информацию в стрктуру

struct disp_res{
    int x;
    int y;
};
struct NOTEBOOK{
    disp_res size_display;
    int regeneration_frequency;
    float diagonal;
    float size_hdd;
    float price;
    char model;
};

написал следующий код для этого:

int main() {
    SetConsoleOutputCP(CP_UTF8);
    string name_file="C:\\Users\\Home\\Desktop\\AlgoritmAndStructData\\Lab1\\Lab1\\note.txt";
    int strInFile;
    string buffer;
    nach:
    ifstream file(name_file);
    if (file.is_open()){
        strInFile = getQuantityString(file);
        NOTEBOOK* array = new NOTEBOOK[strInFile];
        int i = 0;
        file.close();
        ifstream file1(name_file);
        while(!file1.eof()){
            getline(file1, buffer);
            array[i].size_display.x=stoi(split(buffer));
            array[i].size_display.y=stoi(split(buffer));
            array[i].regeneration_frequency=stoi(split(buffer));
            array[i].diagonal=stof(split(buffer));
            array[i].size_hdd=stof(split(buffer));
            array[i].price=stof(split(buffer));
            array[i].model=strToChar(split(buffer));
            i++;
        }
        outputFile(array, strInFile);
    } else{
        if(dialog())
            goto nach;
    }
    return 0;
}

метод split делит строку по символу табуляции

string split(string str){
    string delimiter ="\t", pos_string;
    int position_delimiter = 0;
    position_delimiter = str.find(delimiter);
    if (position_delimiter==-1)
        return str;
    else{
        pos_string = str.substr(0, position_delimiter);
        str.erase(0, position_delimiter + delimiter.length());
        return pos_string;
    }
}

метод getQuantityString подсчитывает количество строк в файле

int getQuantityString(ifstream &files){
    int quantity = 0;
    string buffer ="";
    while (!files.eof()){
        getline(files, buffer);
        quantity++;
    }
    return quantity;
}

выдает ошибку, при попытке преобразования строки в int строка в методе main

array[i].size_display.x=stoi(split(buffer));

Содержимое файла note.txt Кодировка файла UTF-8. Что делаю не так, почему не работает метод stoi()? По отладке посмотрел считывание происходит нормально... ну или мне так кажется Метод сплит отрабатывает корректно

READ ALSO
Проблема с z-lib

Проблема с z-lib

Допустим я использую Bullet Physics у которого лицензия Z-Lib, в пунктах этой лицензии упоминается что я не имею право присваивать этот продукт себе,...

221
308 в степени 611 mod 899

308 в степени 611 mod 899

Как вычислить значение настолько "большого" выражения, как 308^611 (mod 899)Просто делаю алгоритм RSA на C++

218
Вызвать функцию в разных потоках C++

Вызвать функцию в разных потоках C++

Можно ли выполнять разные участки кода одной функции в разных потоках? Например:

258
C++: проверка строки

C++: проверка строки

Функция check() почему-то не работает, при вводе "Start" она все равно выводит сообщение о том, что "Команда введена не верно!" Не могу понять, где...

192