CStringを数値に変換するには?

解決


joker99  2007-07-13 21:57:09  No: 65657

CString s1="100";
int i;
i = atoi(s1);

でいい気がするのですが、

'atoi':1 番目の引数を 'CString' から 'const char *' に変換できまん。

とerrorが発生します。どのようにすればいいのでしょうか?

Visual Studio 2005を使用しています。


joker99  2007-07-13 22:07:35  No: 65658

あと、過去logには

i = atoi( (LPCTSTR)s1 ) ;

という記述もありますが、この場合も

'atoi':1番目の引数を 'LPCTSTR' から 'const char *' に変換できません。

になります。


επιστημη  2007-07-13 22:32:50  No: 65659

さては Unicodeモードになってるな。
i = _tstoi(s1); はいかがでしょうか


joker99  2007-07-13 23:08:36  No: 65660

ありがとうございました。問題が解決しました。
ところでUnicodeモードってなんですか?


επιστημη  2007-07-13 23:12:42  No: 65661

マルチバイト文字(ぶっちゃけShift_JIS)を使うか
ダブルバイト文字(ぶっちゃけUnicode)を使うか
なんですが、VIsual Studio 2005以降、
Unicodeを使うのがデフォルトになってます。
# プロジェクトの設定で切りかえられるけども。


Blue  2007-07-14 00:56:05  No: 65662

CStringはTCHARをベースに設計されています。
一方atoiはcharのみ用の関数です。

よって、CStringでatoiのような関数を使いたい場合TCHAR用の関数
_ttoiを使います。

詳しくは
http://www.ruche-home.net/program/tips/tchar.php
を参考に。

また、キャストしてなぜ出来ないかは
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200706/07060008.txt
を参考にしてください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加