我正在測試如何從std::streamstring
中讀取數據,但是我發現它錯了,有誰能指出有什麼問題?並給出一個正確的方式來閱讀它?從字符串流中讀取內容
我的測試代碼是:
#include <iostream>
#include <string>
#include <sstream>
#define BUFFER_SIZE 16
int main(int argc, char ** argv)
{
std::stringstream ss;
ss << "Un texto con datos de ejemplo para probar la extacción de un stream";
std::cout << "Stream contents: '" << ss.str() << "'" << std::endl;
char buffer[BUFFER_SIZE] = {0};
std::streamsize read = 0;
do {
read = ss.readsome(buffer, BUFFER_SIZE - 1);
std::cout << "Read: " << ss.gcount() << std::endl;
std::cout << buffer << std::endl;
std::cout << "---" << std::endl;
std::fill(buffer, buffer + BUFFER_SIZE, 0);
} while (read > 0);
return 0;
}
而且我得到的輸出:
Stream contents: 'Un texto con datos de ejemplo para probar la extacci¾n de un stream'
Read: 15
Un texto con da
---
Read: 15
tos de ejemplo
---
Read: 15
para probar la
---
Read: 15
extacci¾n de un
---
Read: 5
stre
---
Read: 0
---
正如你可能會注意到最後的讀操作只讀取5個字符留出最後兩個「AM '儘管它應該能夠讀取它。我是否缺少Somtehing?
我認爲你需要使用'wchar_t'版本的流和字符串。 – Nawaz
用常規的'o'代替'ó'結果相同。爲什麼我需要使用'wchar_t'呢? –
我將你的代碼複製到一個.cpp文件中,並使用g ++編譯而沒有參數。在我的機器上,整個流的打印沒有截斷,但第一次只讀取一個字符。我使用gcc 4.9.2和glibc 2.21-3。 –