- ベストアンサー
文字列をint型に変換したいのですが
文字列をint型に変換して、計算に使用したいのですが うまくいきません。 char moji[0] = '1' moji[1] = '2' moji[2] = '3' この文字列をひとつずつint型の変数に代入したいのですが atoi関数を使用した場合、文字列全ての値が変換されてしまいます。 どうしたらいいのでしょうか? お答えいただけるとありがたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
int n0=moji[0]-'0'; int n1=moji[1]-'0'; int n2=moji[2]-'0'; とか。 必要ならisdigitとかを使って文字が数字かどうかの確認を
その他の回答 (3)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★変な回答があるので注意して下さい。 ・回答者No.1さんの >C/C++は不明にして知らないのですが、ord()などの関数はないんでしょうか? ord()などの関数はありません。 自作すれば別ですが。 ・回答者No.3さんの >関数ではなく、キャストではだめでしょうか? これも駄目です。 キャストすると文字コードの値が整数として代入されます。 つまり'1'なら0x31(49)という値で1になりません。 ・回答者No.2さんのように'0'を引けば1桁ずつ数値化できます。
お礼
参考にさせていただきます。 キャストの説明もありがとうございます。 回答ありがとうございました。
- kokorone
- ベストアンサー率38% (417/1093)
関数ではなく、キャストではだめでしょうか? char moji[4]; moji[0] = '1'; moji[1] = '2' moji[2] = '3' int idat[4]; idat[0] = (int)moji[0]; idat[1] = (int)moji[1]; idat[2] = (int)moji[2];
お礼
キャストのことはあまり分からないので、調べて、 今後参考にさせてもらいます。 回答ありがとうございました。
- shimix
- ベストアンサー率54% (865/1590)
C/C++は不明にして知らないのですが、ord()などの関数はないんでしょうか?
お礼
調べてみましたが、よく分かりませんでした。 回答ありがとうございました。
お礼
とても参考になりました! 回答ありがとうございました。