пишу программу, необходимо считывать информацию из 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()?
По отладке посмотрел считывание происходит нормально... ну или мне так кажется
Метод сплит отрабатывает корректно
Сборка персонального компьютера от Artline: умный выбор для современных пользователей