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; }