(char *) &a
- это не строка символов, хранящаяся внутри std::string
, вы просто указываете компилятору обрабатывать этот произвольный адрес (где хранится объект std::string path
), как если бы это были символы.
sizeof(a)
не даст длину строки в байтах: sizeof
дает размер объектов, но объект std:string
- это служебная информация для ваших персонажей, а не сам текст.
Использование
outStream.write(a.c_str(), a.size());
или, что лучше,
outStream << a;