char 配列があり、そこから最初の数値を取得したいと考えています。
たとえば、char 配列が 34 400 43 33 の場合、int のように 34 が必要です。
int FirstInt(char chars[])
{
return atoi(chars.substr(0, bursts.find(' ')));
}
私はこのようなことを考えていましたが、それは有効ではありません。何か案は?
char 配列があり、そこから最初の数値を取得したいと考えています。
たとえば、char 配列が 34 400 43 33 の場合、int のように 34 が必要です。
int FirstInt(char chars[])
{
return atoi(chars.substr(0, bursts.find(' ')));
}
私はこのようなことを考えていましたが、それは有効ではありません。何か案は?
int FirstInt(char chars[])
{
int x;
sscanf(chars, "%d", &x);
return x;
}
最初の数字だけが必要な場合は、文字列をトークン化したり、sscanf を使用したりする必要はありません。
return atoi(str);
マニュアルページから
atoi() 関数は、nptr が指す文字列の最初の部分を int に変換します。
つまり、空白などの数字以外の文字が見つかると停止します。
編集: 一部の実装ではエラー時に 0 を返し、errno (AFAIK) を設定しないため、atoi でエラーを検出することは不可能であることに注意してください。したがって、おそらくstrtolを使用することをお勧めします。 このリンクConverting Strings to Numbersを参照してください。