0

ASCII テーブルの外側にある "á" などの文字を含む文字列を Windows ソケット接続経由で送信しようとしています。次のようなことをしようとすると、反対側からゴミが出てくるのが聞こえます。

std::string message("á");
retval = send(conn_socket, message.c_str(), message.length(), 0);

そこで調査を開始したところ、UTF8 などを使用してエンコードする必要があることに気付きました。私はまだ C++ でこれを行う簡単な方法を探していますが、気付いたストリームの動作について質問があります。

ゴミを出力するのに、なぜstd::ofstream << message正しく出力するのでしょうか? 2つの違いは何ですか?これらの文字をソケット経由で送信するときに、これを有利に使用できますか?ácout << message

4

1 に答える 1

0

文字を表すバイトがファイルに直接書き込まれているファイルに書き込む場合std::ofstream、ファイルを開くアプリケーションは、それらのバイトを文字に戻す責任があります。coutコンソールに書き込むと、バイトが文字に解釈されます。コンソールとアプリケーションは、バイトエンコーディングについて合意する必要はありません。特にWindowsコンソールは、UTF-8が必要な場合でも、コードページの解釈を要求します。

于 2012-08-01T21:04:54.610 に答える