@danij_com

Почему моя функция возвращает мусор?

Должна быть функция, которая возвращает значение s (чтобы использовать его в другой функции), но оно возвращает что-то несуразное.
В чем ошибка? Пример файла, с которым работать должно. Выводится должен текст в keymaterial pastebin.com/HXXY7DNx
string g (string s)
{
	std::ifstream ifs("{1AC815AC-7555-48FB-B768-9E171453FE23}.xml");

	{
		std::string s;
		s.assign((std::istreambuf_iterator<char>(ifs.rdbuf())), std::istreambuf_iterator<char>());
		size_t begin = s.find("<keyMaterial>") + 13;
		size_t end = s.find("</keyMaterial>");
		s = s.substr(begin, end - begin);
		//std::cout << s;
		return s;
	}
}
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 1
TrueBers
@TrueBers
Гуглю за еду
Ну, во-первых, какая кодировка у вашего файла? Просто так лихо добавлять чего-то 13 к позиции, неправльно. Т. к. это может работать, а может и нет, в зависимости от кодировки исходного файла.

Во-вторых, какая у вас стоит локаль терминала? Когда вы делаете вывод в консоль, данные идут в кодировке файла, а кодировка у терминала может отличаться, отсюда и идёт мусор.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы