Я пытаюсь прочитать файл XML и буферизовать его в std::stringstream, но когда я вызываю функцию str() для буферизованных данных, я получаю неверный ptr..
Код...
std::stringstream pushFileToStream(const char* xmlFile)
{
std::stringstream buffer;
std::ifstream file(xmlFile);
if ( file )
{
buffer << file.rdbuf();
file.close();
}
return buffer;
}
int main()
{
const char* xmlFile = "resources/sample.xml";
std::stringstream inputLicenseFile = pushFileToStream(xmlFile);
std::string strXml = inputLicenseFile.str(); <--- bad ptr..
return 0;
}
.str()
возвращаетstd::string
, а не указатель, так к чему все эти разговоры о плохом указателе? Если это действительно компилируется для вас, какой компилятор и версию вы используете? Это должно было быть доисторическим. В любом случае, просто пустьpushFileToStream
принимает поток для работы по ссылке, а не пытается вернуть поток по значению... в любом случае это более гибко. - person Tony Delroy   schedule 25.11.2014return std::move(buffer);
он не учитывает конструктор перемещения.... - person Tony Delroy   schedule 25.11.2014stringstream
. Это не исправить с помощьюmove
. - person MSalters   schedule 25.11.2014