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()如果是这样,请从丢弃前导空格的循环中删除第二行。

于 2013-11-03T21:32:42.447 回答