Unicode文字列がコンソールへ正常出力されない – プログラミング – Home

Unicode文字列がコンソールへ正常...
 
通知
すべてクリア

[解決済] Unicode文字列がコンソールへ正常出力されない


Takahashi
 Takahashi
(@Takahashi)
ゲスト
結合: 21年前
投稿: 45
Topic starter  

環境 Windows XP(SP1), VC .NET2003, コンソールアプリ

構成プロパティ-全般-Unicode 文字セットを使用するで
unicode 指定 (_UNICODE) しております。

以下のプログラムで、正常に文字列が出力されない現象に悩んでおります。

#include stdafx.h

#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <windows.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
string str1 = testテスト;
wstring str2 = Ltestテスト;

cout << str1 << endl;
wcout << str2 << endl;

printf(%s\n, str1.c_str());
wprintf(L%s\n, str2.c_str());

OutputDebugString(str2.c_str());

getch();
return 0;
}

コンソール出力:

testテスト
testtestテスト
test

デバッガ出力:

testテストプログラム '[2936] test.exe: ネイティブ' はコード 0 (0x0) で終了しま
した。

上記出力のように unicode で テスト がコンソールへ全く表示されません。
(endl, \n も効いていない・・・)
試しにブレークポイントを終了前に仕掛け、str2 の中身(string の バッファ)を
見てみると当然の事ながら testテスト が unicode で格納されていました。
また、SDK の OutputDebugString は正常に出力されました。

今回初めて本格的に unicode を使用したもので、
何が悪いのか全く見当がつかない状態です。
みなさま、ご指摘よろしくお願いいたします。

# ちなみに MFC で TRACE マクロも使えませんでした・・・


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

#include <locale> を追加し、

_tmainに入ったらいきなり、

locale::global(locale(japanese));

してみて。


返信引用
Takahashi
 Takahashi
(@Takahashi)
ゲスト
結合: 21年前
投稿: 45
Topic starter  

επιστημη さんレスありがとうございます。

locale::global(locale(japanese));

を入れたら一発で動きました!(感謝です)

locale について調べてわかったのですが setlocale の C++ 版なんですね
ためしに setlocale(LC_CTYPE, japanese);
としても動作することを確認できました。
とても勉強になります。
# ちなみに setlocale なんて1回も使ったことないです・・・

調子に乗って STLport に切り替えたら文字化けが・・・
こちらは自分で調べてみます。

毎回ながら初歩的な質問でお騒がせしました。
επιστημη さんどうもありがとうございました。

# あと、TRACE が使えないって書きましたけど普通に使えました。
# なんで使えないって思ったんだろうか・・・(^_^;


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました