Я хочу записать в std::stringstream
без какого-либо преобразования, скажем, окончания строки.
У меня есть следующий код:
void decrypt(std::istream& input, std::ostream& output)
{
while (input.good())
{
char c = input.get()
c ^= mask;
output.put(c);
if (output.bad())
{
throw std::runtime_error("Output to stream failed.");
}
}
}
Следующий код работает как брелок:
std::ifstream input("foo.enc", std::ios::binary);
std::ofstream output("foo.txt", std::ios::binary);
decrypt(input, output);
Если я использую следующий код, я сталкиваюсь с std::runtime_error
, где вывод находится в состоянии ошибки.
std::ifstream input("foo.enc", std::ios::binary);
std::stringstream output(std::ios::binary);
decrypt(input, output);
Если я удаляю std::ios::binary
, функция дешифрования завершается без ошибок, но я получаю CR, CR, LF в качестве окончания строки.
Я использую VS2008 и еще не тестировал код на gcc. Это так, как он должен себя вести, или реализация MS std::stringstream
не работает?
Есть идеи, как я могу получить содержимое в std::stringstream
в правильном формате? Я попытался поместить содержимое в std::string
, а затем использовать write()
, и это также дало тот же результат.