CString s1="100";
int i;
i = atoi(s1);
でいい気がするのですが、
'atoi':1 番目の引数を 'CString' から 'const char *' に変換できまん。
とerrorが発生します。どのようにすればいいのでしょうか?
Visual Studio 2005を使用しています。
あと、過去logには
i = atoi( (LPCTSTR)s1 ) ;
という記述もありますが、この場合も
'atoi':1番目の引数を 'LPCTSTR' から 'const char *' に変換できません。
になります。
さては Unicodeモードになってるな。
i = _tstoi(s1); はいかがでしょうか
ありがとうございました。問題が解決しました。
ところでUnicodeモードってなんですか?
マルチバイト文字(ぶっちゃけShift_JIS)を使うか
ダブルバイト文字(ぶっちゃけUnicode)を使うか
なんですが、VIsual Studio 2005以降、
Unicodeを使うのがデフォルトになってます。
# プロジェクトの設定で切りかえられるけども。
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
を参考にしてください。
ツイート | ![]() |