Stavo testando come leggere i dati da un std::streamstring
ma mi sto sbagliando, qualcuno potrebbe indicare qual è il problema? e dare un modo corretto per leggerlo?Lettura di contenuti da uno strings
Il mio codice di prova è:
#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;
}
e sto ottenendo l'output:
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
---
Come si può notare l'ultima operazione di lettura legge solo 5 caratteri lasciando fuori gli ultimi due 'am 'anche se avrebbe dovuto essere in grado di leggerlo. Mi manca qualcosa?
Penso che sia necessario lavorare con la versione 'wchar_t' di stream e stringhe. – Nawaz
Sostituire il 'ó' con un normale risultato' o' nello stesso risultato. Perché dovrei lavorare comunque con 'wchar_t'? –
Ho copiato il tuo codice in un file .cpp e compilato usando g ++ senza argomenti. Sulla mia macchina, l'intero stream viene stampato senza troncamento, ma il primo read acquisisce solo un carattere. Sto usando gcc 4.9.2 e glibc 2.21-3. –