
No.1ベストアンサー
- 回答日時:
数字に変換するための文字列を格納できるバッファを準備して
そこに元文字列の指定位置から切り出して数値に変換します
今回の場合なら 受け取る文字列のバッファは2文字とC/C++の文字列の終端をあらわすNULL文字との3文字分が最低でも入ります
int test( LPCTSTR s )
{
TCHAR buf[3];
TCHAR *p = s;
int a,b,c,d;
// 受け取り側を初期化
buf[0] = buf[1] = buf[2] = _T('\0');
// 12 をコピー
_tcsncpy( buf, p, 2 );
a = atoi( buf );
// 受け取り側を初期化
buf[0] = buf[1] = buf[2] = _T('\0');
// 34 をコピー
p += 2;
_tcsncpy( buf, p, 2 );
b = atoi( buf );
// 受け取り側を初期化
buf[0] = buf[1] = buf[2] = _T('\0');
// 5 をコピー
p += 2;
_tcsncpy( buf, p, 1 );
c = atoi( buf );
d = a + b - c;
return d;
}
といった具合です
または sscanfを使ってもいいのであれば
int test(LPCTSTR s )
{
int a, b, c, d;
// 文字列が不正だった場合の特殊な値
d = -9999;
if ( 3 == _stscanf( s, _T("%2d%2d%d"), &a, &b, &c ) ) {
d = a + b - c;
}
return d;
}
といった具合です
No.3
- 回答日時:
横から失礼
> a = atoi( buf );
a = _ttoi( buf );
TCHAR型なので、atoi()ではなく、_ttoi()だと思う。
No.2
- 回答日時:
10進数5桁であるなら……。
int test (LPCTSTR s)
{
int val, a, b, c, d;
val = (int)_tcstol(s, 0, 10); /* 数字を数値に変換 */
a = (val / 1000) % 100;
b = (val / 10) % 100;
c = val % 10;
d = a + b - c;
return d;
}
というのもありですね。
# エラー処理は端折っています。
参考URL:http://msdn.microsoft.com/ja-jp/library/w4z2wdyc …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・
C言語・C++・C#
-
charからLPTSTRへの変換方法
C言語・C++・C#
-
LPSTR型の初期化について
C言語・C++・C#
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
LPCWSTRとchar
C言語・C++・C#
-
6
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
7
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
8
c++ TCHARで文字化け
C言語・C++・C#
-
9
画面を強制的に再描画させる方法
C言語・C++・C#
-
10
char型にint型の数値を代入する。
C言語・C++・C#
-
11
WaitForSingleObjectの使い方について
C言語・C++・C#
-
12
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
13
socket: recvはいつ,どれだけ受け取るのか?
C言語・C++・C#
-
14
(マルチスレッド)_beginthreadexに複数の引数を渡す
C言語・C++・C#
-
15
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
16
既定のコンストラクタがない?
C言語・C++・C#
-
17
_tcscpy_s(wcscpy_s)の第二引数って
C言語・C++・C#
-
18
CString から LPCTSTRの型に変換
C言語・C++・C#
-
19
MFC、ダイアログベースでのモードレス作成
C言語・C++・C#
-
20
半角文字と全角文字の判別の仕方
C言語・C++・C#
関連するQ&A
- 1 ■int型の数値から数字文字への変換について
- 2 配列型の数字データをint型に変える方法
- 3 char型全角数字から、int型半角数字への変換方法
- 4 unsigned int型と int型の型変換の上位性
- 5 数字の double 型 を int型 にする時
- 6 DirectXの文字表示について(int型をLPCTSTR型に変換した
- 7 C++で文字列の右端から特定の文字までの文字列を
- 8 int main の前のint add(int a,int b) ってなんですか?
- 9 「void ( *signal(int sig, void (*func)(int)) ) (int)」の (int)
- 10 文字列をint型にキャスト
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
干支のプログラム
-
5
数字文字の出現回数を表示する...
-
6
C言語の入力した文字を反転させ...
-
7
fgetsなどのときのstdinのバッ...
-
8
int main()の・・・
-
9
'const char *' 型は 'char *' ...
-
10
c言語プログラミング実行時エラ...
-
11
英単語をアルファベット順に
-
12
C#からC言語で作成したDLLに文...
-
13
ランダムな英文字の文字列作成
-
14
C言語 ミリ秒を日付に変換には
-
15
テキストデータをそのままバイ...
-
16
c++ 文字列を入力して、一文字...
-
17
至急!C言語文字列置換
-
18
ファイルから入力した文字数を...
-
19
charからLPTSTRへの変換方法
-
20
文字列がNULLか空文字列かの判定
おすすめ情報