2012-04-18 1 views
0

1) У меня есть этот кодbasic_filebuf. Многие странный текст в выходном файле

//... many code below 
     std::basic_filebuf<char, std::char_traits<char> > streamIn; 
     streamIn.open("file.txt", std::ios_base::trunc | std::ios_base::out); 
     streamIn.sputn("Hello", 5); 
//... 

Но в file.txt я вижу много много странного текста. Не только Привет. Этот файл также охватывает все мои записи из БД! Я не знаю почему

2) Могу ли я использовать std :: basic_filebuf без файла? Как станд :: basic_stringbuf

Раствор для 1) найдено

// ... 
    std::basic_filebuf<char, std::char_traits<char> > streamIn; 
    streamIn.open("file.txt", std::ios_base::out); 
    streamIn.sputn(responce.c_str(), responce.size()); 
    streamIn.close(); 

    streamIn.open("file.txt", std::ios_base::in); 
//... 
+0

Итак, выходной файл начинается с «Hello», но имеет дополнительный текст за этим? Вы закрываете файл правильно? –

+0

У меня нет текста «Привет» в моем файле! Только записи из DB :( – Ilya

+0

У меня есть streamIn.close(); – Ilya

ответ

0

Как указано here, basic_filebuf является basic_streambuf, который взаимодействует с файлом.

Так что нет, я не думаю, что вы можете использовать его без файла.

Вместо этого вы можете использовать basic_streambuf, и вы определяете, хотите ли вы, чтобы он был файлом (с использованием basic_filebuf) или строкой (с использованием basic_stringbuf).