...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

boost::asio

boost::asio::ip::tcp::iostream で文字列を受信してみる.
文字コードとか考えずに受信してただ cout に表示したら当然化け化け.
STL + Boost 限定で特定の文字コードに変換して出力する方法ってどうしたらいいのかなー.
あと std::istream_iterator/std::ostream_iterator を使って一行ずつ読み込み,一行ずつ出力ってできなかったっけ.あれー.

#include <boost/asio.hpp>
#include <iostream>
#include <fstream>
//#include <string>
//#include <algorithm>
//#include <iterator>
using namespace std;
using namespace boost::asio;

template <typename ISTREAM, typename OSTREAM>
void print_each_line(ISTREAM& is, OSTREAM& os)
{
	string line;
	while( getline(is, line) )
		os << line << endl;
};

int main()
{
	// http サービスに接続
	ip::tcp::iostream is("d.hatena.ne.jp", "http");

	// 送信
	is << "GET /haru-s/ HTTP/1.0\r\n";
	is << "Host: d.hatena.ne.jp\r\n";
	is << "\r\n";
	is << flush;

	// 受信
	print_each_line(is, cout);

	//ofstream of("c:\\a.txt");
	//print_each_line(is, of);

	// あれ,一行ずつは読み込めなかったっけ?
	//copy(istream_iterator<string>(is), istream_iterator<string>(), ostream_iterator<string>(cout, "\n"));

	return 0;
}