Je voudrais convertir un boost :: asio :: streambuf en une chaîne std :: string.
Comment est-ce que je fais cela facilement?Comment convertir un boost :: asio :: streambuf en une chaîne std :: string?
3
A
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;
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.
cela ne va saisir que le premier ensemble de caractères. Il s'arrêtera quand il lit dans les espaces. –