Как вывести несколько строк с помощью asio::stream_file::async_write_some?C++

Программы на C++. Форум разработчиков
Anonymous
Как вывести несколько строк с помощью asio::stream_file::async_write_some?

Сообщение Anonymous »

Существует перегрузка функции asio::stream_file::async_write_some, которая принимает последовательность буферов. Но в моем случае (см. код ниже) он выводит только содержимое первого буфера, и я сейчас не могу понять, что делаю не так. Конечно, можно написать код, который выводит первый буфер, и регистрировать обратный вызов, который выводит второй буфер (и регистрировать обратный вызов, который выводит третий буфер и так далее). Но я надеюсь, что есть более простое решение?

Код: Выделить всё

#include 
#include 
#include 

#include 
#include 

namespace asio = boost::asio;

...

const std::vector lines{
"first line\n",
"second line\n",
"third line\n"
};
std::vector buffers;
buffers.reserve(lines.size());
for (const auto& line : lines) {
buffers.push_back(asio::buffer(line.data(), line.size()));
}

asio::io_context ctx;
const char* output_path = R"(C:\Users\MyUsername\workspace\temp\lines.txt)";
asio::stream_file stream(ctx);
stream.open(
output_path,
asio::stream_file::write_only|asio::stream_file::create
);
stream.async_write_some(
buffers,
[](boost::system::error_code e, size_t n) {
if (e != boost::system::errc::success) {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79282269/how-to-output-multiple-lines-using-asiostream-fileasync-write-some[/url]

Вернуться в «C++»