Giriş
Açıklaması şöyle.
const char *
Şöyle yaparız.
Elimizde şöyle bir kod olsun
Şöyle yaparız.
Şöyle yaparız.
buffer_cast metodu
asio::const_buffer nesnesinin başlangıç ve sonunu almak için kullanılır.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Açıklaması şöyle.
boost::asio::buffer is a function that creates buffer objects (mutable or const),
Bu metodu asio::async_write() ile sıkça kullanılır. Bu metoda ikinci parametre olarak geçilir. Şöyle yaparız.asio::async_write(socket, boost::asio::buffer(str), handler);
Metod iki parametre alır. Birinci parametre kaynak nesne, ikinci parametre byte sayısıdır, ancak ikinci parametreyi kullanmaya genelde gerek kalmaz.const char *
Şöyle yaparız.
auto b = boost::asio::buffer("GET / HTTP/1.1\r\n\r\n");
std::arrayElimizde şöyle bir kod olsun
boost::array<float, 512> arr = { { 0.0f } };
Şöyle yaparız.auto buffer = boost::asio::buffer(arr);
std::stringŞöyle yaparız.
std::string str = ...;
boost::asio::buffer(str);
std::vectorŞöyle yaparız.
void ReadDataIntoBufferPassedIn(const boost::asio::mutable_buffer& buffer) {
int* p = boost::asio::buffer_cast<int*>(buffer);
*p = 5; // Do whatever you want with p
}
std::vector<int> v{1,2,3};
ReadDataIntoBufferPassedIn(boost::asio::buffer(v));
Diğerbuffer_cast metodu
asio::const_buffer nesnesinin başlangıç ve sonunu almak için kullanılır.
Örnek
Şöyle yaparız.
using Floats = boost::array<float, 10>;
Floats sending = { { M_PI } };
auto buffer = boost::asio::buffer(sending);
// extract the first float back
std::cout << "Pi is " << boost::asio::buffer_cast<float const*>(buffer)[0] << "\n";
ÖrnekŞöyle yaparız.
void test(asio::const_buffer const& buffer)
{
auto first = asio::buffer_cast<const char*>(buffer);
auto last = first + asio::buffer_size(buffer);
std::copy(first, last, std::ostream_iterator<char>(std::cout));
std::cout << std::endl;
}
int main()
{
std::string s = "hello";
test(asio::buffer(s));
}
Hiç yorum yok:
Yorum Gönder