Считывание строки из файла
В моем файле содержится строка "Название : faso". Мне нужно : 1)Считать строку из файла 2)Обрезать часть "Название : " То есть тем самым получить только "faso" Как я пытался это сделать :
ifstream fin(path,ios_base::in); //path - строка с именем файл
char b[50];
string test;
fin.getline(b,50);
int size = sizeof("Название : ") + 1;
for (int i = size; i < size + 10;i++) {
string str = to_string(b[i]); // переменную str создаю чтобы проще было понять что я вставляю в конец test
test.append(str);
}
cout << test << endl;
Но в итоге я получаю :
1151110011210100
Во-первых я не понимаю почему sizeof("Название : ") + 1; возвращает мне не 12 (длина строки 11 + 1) а 21!
И когда я смотрю на мою b через отладчик , то моя строчка "faso" находится под индексами 19-22 в переменной b.
Ответы (2 шт):
Я бы резал просто по ": " - это проще.
string getFaso(const string& s)
{
if (auto p = s.find(": "); p != s.npos)
return s.substr(p+2);
return s; // Или рустую строку, если не найдено
}
Можно обгрызть лишние пробельные символы, если они могут быть...
Ваши фокусы с to_string(b[i]) мне вообще непонятны. Зачем вам преобразовывать код символа в строку?...
А я бы просто прочитал только то, что нужно:
string s;
// не думаю, что будет больше 1000 символов перед :
fin.ignore(1000, ':');
while (fin.peek() == ' ') fin.ignore();
std::getline(fin, s);