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

while(!file1.eof()){- так не делается... См. https://ru.stackoverflow.com/questions/833980/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8-%D0%BA%D0%BE%D0%BD%D1%86%D0%B0-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0 – Harry Sep 15 '18 at 13:34goto nach;повторно инициализируетfileприводя к неопределенному поведению. Ситуация, когда строка вsplitпустая никак не обрабатывается. – user7860670 Sep 15 '18 at 13:38