「TCHAR」から「int」や「double」、「__int64」や「long」などの型に変換する関数は探せば見つかったのですが、どうしても「unsigned __int64」へ変換する関数が見つかりません。
自分で関数を用意するしかないのか、それとも探し方が悪くて実はあるのか、教えていただきたいのです。
よろしくお願いいたします。
変換ってのが何を意図してる文言なのか良くわからんけど
TCHAR c='a';
__int64 x=c; でも「変換」しているわけで。
_stscanf とか。
>「TCHAR」から「int」や「double」、「__int64」や「long」などの型に変換する関数
とは?
TCHARは、charまたはwchar_t(unsigned short)ですのでint, double, __int64, longのどれよりも扱える範囲が狭いです。
ですので、代入するときはそのまま(ケタ落ちせずに)入れれます。
TCHAR c = 10;
int n = c;
double d = c;
__int64 n64 = c;
long l = c;
unsigned __int64の場合、負の値を扱わないものなので、どう扱うか決めてもらわないと単に代入ということはできません。
(マイナスの値をどう扱うか)
もっとも、TCHAR型の『配列』で『123』という『文字列』を数値の123として扱うという意味であればまったく質問の内容が間違っています。
「atoi、atol atoi64 のように __atoui64 があると思ったのに見当たらない」
ってことじゃないか?
すいません、言葉が足りませんでした。以後気をつけます…
いわゆるatoi関数のように、文字列を数値として扱うようにしたいのです。
http://msdn.microsoft.com/ja-jp/library/0heszx3w(VS.71).aspx
を見ても、「文字列 → __int64」は載っているのに、探している「文字列 → unsigned __int64」は載っていなかったので、質問させていただきました。
だから _stscanf で変換できる (VC++6 以後すべて)
ato* 系は符号付きしかないので今回の用途には向かない
strto* 系に _tcstoui64 (_strtoui64) があるけど VC++6 には無い
vs2003 以後か vs2005 以後かでよければ _tcstoui64 で。
みなさん、ありがとうございました。無事解決いたしました。
ツイート | ![]() |