从asio :: ip :: tcp :: socket直接写入std :: string

时间:2017-01-28 06:01:12

标签: c++ c++14 boost-asio

我尝试从asio套接字读取到std :: string而不进行复制。 这种实现似乎有效,但我不确定它是否可靠。

string read(int bytes)
{
    string str;
    str.resize(bytes);
    char* buffer = (char*) str.data();
    //socket is declared as class member
    asio::read(socket,asio::buffer(buffer,bytes));
    return str;
}

1 个答案:

答案 0 :(得分:2)

是的,有效。但直接使用它会更加迅速:

<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title"></h4>
        </div>
        <div class="modal-body">
            <p>Some text in the modal.</p>
            <input class='date-picker' />
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Save</button>
        </div>
    </div>
</div>

这样你就可以避免C风格重新诠释的所有令人讨厌的问题。 (顺便说一句,也抛弃了const)