文字列に大きな数が格納されていて、1桁を抽出しようとしています。しかし、それらの呼び出しの違いは何ですか?
#include <iostream>
#include <string>
int main(){
std::string bigNumber = "93485720394857230";
char tmp = bigNumber.at(5);
int digit = atoi(&tmp);
int digit2 = atoi(&bigNumber.at(5))
int digit3 = atoi(&bigNumber.at(12));
std::cout << "digit: " << digit << std::endl;
std::cout << "digit2: " << digit2 << std::endl;
std::cout << "digit3: " << digit3 << std::endl;
}
これにより、次の出力が生成されます。
桁:7
桁2:2147483647
桁3:57230
最初のものは望ましい結果です。2つ目は乱数のようですが、文字列では見つかりません。3つ目は文字列の終わりですが、予想どおり1桁だけでなく、12番目のインデックスから文字列の終わりまでです。誰かが私にさまざまな出力を説明できますか?
編集:これは許容できる解決策でしょうか?
char tmp[2] = {bigNumber.at(5), '\0'};
int digit = atoi(tmp);
std::cout << "digit: " << digit << std::endl;