0

実際にストリームから文字を抽出せずに、入力ストリーム内の最初の非数字までの文字数を数えようとしています。入力には任意の数の文字を含めることができます。ストリームの数字を配列に格納する前に、動的配列を拡張する必要があるかどうかを判断するために、これを行う必要があります。

次のライブラリに限定されています: iostream、cstring、cctype

私は次のようなことを考えていました:

int counter = 0;
const char * s = cin.getline();

while( s[counter] <= '0' || s[counter] >= '9' )
{
   counter++;
}

しかし、私はそれを機能させるのに苦労しています。どんなアドバイスでも大歓迎です!

4

1 に答える 1

1

次のようなものを試してください:

std::istream::pos_type start = is.tellg();

while (std::isdigit((is >> std::ws).peek()) && is.ignore())
    ;

counter = in.tellg();
is.seekg(start, std::ios_base::beg);

この場合、空白は数字以外の文字としてカウントされますか? while()その場合は、先頭の空白を破棄するループから 2 行目を削除します。

于 2013-11-03T21:32:42.447 に答える