1

私は telnet 経由でディクショナリ サーバーに取り組んでおり、次の形式で返すようにしたいと考えています。

  **word** (wordType): wordDef wordDef wordDef wordDef
wordDef wordDef wordDef.

現在、次を使用してコードを出力しています。

write( my_socket, ("%s", word.data()    ), word.length()    ); // Bold this
write( my_socket, ("%s", theRest.data() ), theRest.length() );

そのため、最初の行を太字にしたいと思います。

編集

申し訳ありませんが、これはコマンド ライン用であることを忘れていました。

4

1 に答える 1

4

VT100 エスケープ シーケンスのようなものを使用することを検討してください。サーバーは telnet ベースであるため、ユーザーはさまざまな端末モードをサポートするクライアントを持っている可能性があります。

たとえば、VT100 端末で太字をオンにしたい場合は、次のように出力します。

ESC[1m

ここで、「ESC」は文字値 0x1b です。通常のフォーマット出力に戻すには

ESC[0m

アプリケーションでこれを使用するには、例の行を質問から次のように変更できます。

std::string str = "Hello!"
write( my_socket, "\x1b[1m", 4); // Turn on bold formatting
write( my_socket, str.c_str(), str.size()); // output string
write( my_socket, "\x1b[0m", 4); // Turn all formatting off

VT52、VT220 などの他の端末モードがあります。単純な太字のオン/オフだけが必要な場合は少し重いかもしれませんが、ncursesの使用を検討することをお勧めします。

于 2013-05-16T15:16:36.580 に答える