String ^ の全角文字列→char *変換 – プログラミング – Home

String ^ の全角文字列→cha...
 
通知
すべてクリア

[解決済] String ^ の全角文字列→char *変換


とるまリンゴ
 とるまリンゴ
(@とるまリンゴ)
ゲスト
結合: 19年前
投稿: 35
Topic starter  

全角日本語文字列
 String ^ stringText = 全角日本語;
を、char配列
char szText[128];
に変換したいのですが、

http://msdn2.microsoft.com/ja-jp/library/d1ae6tz5(VS.80).aspx
記載の方法でうまくいきません。

半角英数字ならうまくいきます。
全角文字列をどうやって変換するのでしょうか?

<開発環境>
Windows XP SP2, Visual C++2005,
構成プロパティ「文字セット」=設定なし


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

...
#include < vcclr.h >
#include < locale.h > // 追加

using namespace System;

int main() {
setlocale(LC_ALL,japanese); // 追加

String ^str = こんにちは; // 変更
...


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467

返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

もしくは、_wcstombs_s_lを使う。
http://forums.belution.com/ja/vc/000/379/39s.shtml


返信引用
とるまリンゴ
 とるまリンゴ
(@とるまリンゴ)
ゲスト
結合: 19年前
投稿: 35
Topic starter  

επιστημηさん、Blueさん 素早い返答有難うございます。

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=818937&SiteID=7
の 訂正版 sample2()でうまくいきました。
(訂正版 sample4()では失敗)

他は、これから試します。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>(訂正版 sample4()では失敗)
いや、だからεπιστημηさんも、わたしのコードのコメントにもあるように

wcstombs_s関数を使うためにも

setlocale( LC_ALL, Japanese );

の記述は必須になります。

# 最初から、_wcstombs_s_l で書いておけばよかったかなぁ。


返信引用
とるまリンゴ
 とるまリンゴ
(@とるまリンゴ)
ゲスト
結合: 19年前
投稿: 35
Topic starter  

> いや、だからεπιστημηさんも、わたしのコードのコメントにもあるように
> wcstombs_s関数を使うためにも
> setlocale( LC_ALL, Japanese );
> の記述は必須になります。

επιστημηさん、Blueさんのコメントにある
#include < locale.h > // 追加
setlocale(LC_ALL,japanese); // 追加
2行を元コードに追加するだけで動きました。失礼しました。

setlocale(LC_ALL,japanese); についてよくわかっていないのですが、
訂正版 sample2()ではなくても動きました。
どういう時に使うのでしょうか。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> どういう時に使うのでしょうか。

設定されているlocaleを頼りに変換を行う関数(つまりwcstombsなど)を呼ぶとき。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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