2009-12-14 7 views

Répondre

1

n'a pas essayé, mais si je lis correctement les documents, cette classe hérite de std::streambuf, dans ce cas, vous pouvez le faire:

std::istream buffer(my_asio_streambuf_ptr); 
std::stringstream string_buffer; 

buffer >> string_buffer.rd_buf(); 

Il y a plusieurs façons de le faire, et chacun a ses avantages et inconvénients. Si vous pouviez expliquer votre problème plus en détail, nous pouvons vous proposer une aide plus spécifique.

0

Quelque chose comme ceci est probablement ce que vous êtes après:

boost::asio::streambuf myBuffer; 
std::string myString; 

// Convert streambuf to std::string 
std::istream(&myBuffer) >> myString; 
+4

cela ne va saisir que le premier ensemble de caractères. Il s'arrêtera quand il lit dans les espaces. –

5

J'utilise cette aproche:

boost::asio::streambuf stream_buf; 
... 
std::string s((std::istreambuf_iterator<char>(&stream_buf)), std::istreambuf_iterator<char>()); 

vous pouvez lire les données à partir de tout autre type de cours d'eau, F.E., ifstream.