chriskohlhoff / asio

Asio C++ Library
http://think-async.com/Asio
4.73k stars 1.2k forks source link

asio::stream_file on windows #1346

Open jQill opened 10 months ago

jQill commented 10 months ago
#include <asio.hpp>
#include <iostream>

int main(int argc, char* argv[])
{
    asio::io_context context;
    asio::executor_work_guard<asio::io_context::executor_type> guard =
        asio::make_work_guard(context);
    asio::stream_file file(context, "D:/file.txt",
                           asio::stream_file::write_only | asio::stream_file::create);

    std::vector<char> s1(10, 'a');
    std::vector<char> s2(10, 'b');
    std::vector<char> s3(10, 'c');

    std::array<asio::const_buffer, 3> buffers;
    buffers[0] = asio::buffer(s1);
    buffers[1] = asio::buffer(s2);
    buffers[2] = asio::buffer(s3);

    asio::async_write(file, buffers,
                      [&](const asio::error_code& error, std::size_t length)
                      {
                          if (error)
                          {
                              std::cerr << "An error occurred: " << error.message() << '\n';
                          }
                          file.close();
                          context.stop();
                      });

    context.run();

    return 0;
}

Linux: aaaaaaaaaabbbbbbbbbbcccccccccc Windows: aaaaaaaaaa bbbbbbbbbb cccccccccc