Считывание строки из файла

В моем файле содержится строка "Название : 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 шт):

Автор решения: Harry

Я бы резал просто по ": " - это проще.

string getFaso(const string& s)
{
    if (auto p = s.find(": "); p != s.npos)
        return s.substr(p+2);
    return s;  // Или рустую строку, если не найдено
}

Можно обгрызть лишние пробельные символы, если они могут быть...

Ваши фокусы с to_string(b[i]) мне вообще непонятны. Зачем вам преобразовывать код символа в строку?...

→ Ссылка
Автор решения: AR Hovsepyan

А я бы просто прочитал только то, что нужно:

string s;
// не думаю, что будет больше 1000 символов перед :
fin.ignore(1000, ':'); 
while (fin.peek() == ' ') fin.ignore();
std::getline(fin, s);
→ Ссылка