пишу программу, необходимо считывать информацию из 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()
?
По отладке посмотрел считывание происходит нормально... ну или мне так кажется
Метод сплит отрабатывает корректно
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Допустим я использую Bullet Physics у которого лицензия Z-Lib, в пунктах этой лицензии упоминается что я не имею право присваивать этот продукт себе,...
Как вычислить значение настолько "большого" выражения, как 308^611 (mod 899)Просто делаю алгоритм RSA на C++
Можно ли выполнять разные участки кода одной функции в разных потоках? Например:
Функция check() почему-то не работает, при вводе "Start" она все равно выводит сообщение о том, что "Команда введена не верно!" Не могу понять, где...