[解決済み] C++: プラットフォーム非依存でASCIIハートとダイヤを印刷する
質問
カードゲームを開発しているのですが、ハート、ダイヤ、スペード、クラブのシンボルを印刷したいのです。 ターゲットプラットフォームはLinuxになります。
Windowsでは、これらのシンボルをプリントアウトする方法を知っています。 例えば、ハートをプリントアウトするには(ASCIIで)...と書きました。
// in Windows, print a ASCII Heart
#include <iostream>
using std::cout;
using std::endl;
int main()
{
char foo = '\3';
cout << heart << endl;
system ( "PAUSE" );
return 0;
}
しかし、先に述べたように、Linuxではハートのマークがプリントされません。 LinuxとWindowsの両方でハート、ダイヤ、スペード、クラブのシンボルをプリントアウトできる標準的なライブラリはないのでしょうか? これまで調べてきたのは、ユニコードが世界共通だと理解しているので、ユニコードに注目しています。
どのように解決するのですか?
もし、ポータブルな方法を望むなら、ユニコードのコードポイント(グリフが関連付けられて定義されている)を使用することです。
♠ U+2660 Black Spade Suit
♡ U+2661 White Heart Suit
♢ U+2662 White Diamond Suit
♣ U+2663 Black Club Suit
♤ U+2664 White Spade Suit
♥ U+2665 Black Heart Suit
♦ U+2666 Black Diamond Suit
♧ U+2667 White Club Suit
ASCIIの32文字以下は、すべて 制御文字 . これらの文字には意味があり、そこにグリフや動作が得られる保証はありません (ほとんどの制御文字にはグリフがありますが、印刷可能な文字として意図されたものではありません)。それでも、安全とは言えません。
しかし、ユニコードを使用するには、適切なフォントとエンコーディングのサポートが必要で、これはUNIX-likeでは問題ないかもしれません。
Windows では、コンソールがラスターフォントに設定されている場合、上記のコードポイントの少なくともいくつかは、出力する ASCII 制御文字グリフにマップされます (したがって、ユニコードや現在設定されている OEM コードページ以外のものをサポートしていません)。これは黒のバリエーションにのみ適用され、白のバリエーションには同等のものがありません。
関連
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] ASCIIとUnicodeの違いは何ですか?
-
[解決済み】非ASCII文字を半角スペースで置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】'std::cout'への未定義の参照