- ベストアンサー
UNICODE定義されている場合の関数のサンプル
お世話になります。 VC++で開発している初心者です。 UNICODE定義されているため、一般的に?使用されている関数が使えません。 MSDNを見て、例えば、strcpyの場合は、UNICODE対応の_tcscpyを使えよ、という事は調べられるのですが、実際に使用しているサンプル文が無く、悪戦苦闘しております。 UNICODE定義用の関数一覧のサンプル文が載っている(勉強できる)HP等ございましたら、教えて頂けませんでしょうか。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 分からないところはMSDNライブラリなどを調べるようにしましょう。 CString s = "123"; double d = atod(s); を CString s = "123"; double temp = _tcstod((LPCTSTR)s, NULL); と書き換える場合ですが、混乱を避けるために CString s = _T("123") と_Tのマクロを使ったほうが良いでしょう。 それで _tcstodの2番目の引数ですがatodと同じように使いたい場合にはNULLで大丈夫です。(NULLポインタ自体の意味はもちろん分かっていますよね? これはC/C++の基本ですから...) 2番目の引数はMSDNライブラリによると > endptr が NULL 以外の場合は、走査を停止させた文字へのポインタを endptr が指す位置に格納します。 > 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、nptr の値を endptr が指す位置に格納します。 とあります。つまり正しく変換できたかを判定するために使えるわけです。 もう少しご自分で調べる癖をつけないと、後々困ったことになりますよ。
その他の回答 (3)
- yosi_yosi
- ベストアンサー率35% (165/468)
つい最近Unicode非対応のソフトをUnicode対応に書き換えましたが、単純に引数の型が違うのと関数名が違うだけです。 何がどう悪戦苦闘するのでしょうか? 変数の型charをwchar_tに strcpyをwcscpyに 単純な置き換え作業です。大概の場合はエディッタの置き換え機能で一発です。 関数はMSDNで調べれば割と簡単に検索できます。 何が分からないのか補足されたほうが良いと思いますよ。
お礼
回答有難うございます。 質問内容が間違っておりました。 UNICODE対応ではなく、マルチバイト対応を目指しております。 ですので、strcpyの場合は、wcscpyではなく、_tcscpyになります。 何がどう難しい(分からない)のか、と申しますと 例えば、文字列を浮動小数点型に変換する時、UNICODEを意識しない場合は CString s = "123"; double d = atod(s); と、見た目からして簡単に行えますが、マルチバイトの場合 CString s = "123"; double temp = _tcstod((LPCTSTR)s, NULL); と書くことになると思います。(書くことが出来ます) 使用した_tcstod関数の第2引数(NULLにあたる部分)は何を意味するの?と いったところが分からないのです^^;
こんにちは。 「UNICODE定義」って意味が良く判りませんので、外しているかも知れませんが、よろしければ「参考URL」をご参照ください。
お礼
回答有難うございます。 サイトを紹介して下さいまして、重ね重ね有難うございます。 しかし、僕が求めているのはもっと初級レベルのようです^^; 「UNICODE定義」とは、_UNICODEマクロ定義がなされているプログラム、という意味でした。
- rinkun
- ベストアンサー率44% (706/1571)
Webサイトじゃないけど、tchar.hを見てみるとか。 なおMSDNにおける文字列操作の一覧は参考URLに。 UNICODEを扱うのはwc付きの関数群で、t付きのはUNICODE系とマルチバイト系で共通のコードを書くためのマクロ定義だから。 基本的に使い方は標準ライブラリ関数の対応するものと同じなのでサンプルがないと使えないというものではないと思うけど。
お礼
回答有難うございます。参考にさせて頂きます(__) 引数は同じだから使い方は分かるでしょ、と上司にも 言われたんですが、それが、よく分からないんです(汗)
お礼
たびたびご回答有難うございます。 今まで、じっくりと説明テキストを読むのではなく サンプル文を見て、イメージで把握し、開発していたため サンプルがヒットしない事にイライラしておりました。 これからは、じっくりとテキストを読もうと思います。有難うございました。 また、何かありましたら、宜しくお願い申し上げます。