在不提取的情况下读取输入流

时间:2013-11-03 21:28:46

标签: c++

我正在尝试将输入流中的字符数计算到第一个非数字,而不实际从流中提取字符。输入可以包含任意数量的字符。我需要这样做以确定在将数字存储在数组中的流中之前是否应该生成动态数组。

我仅限于以下库:iostream,cstring,cctype

我在想这样的事情:

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

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

但是我在努力工作方面遇到了一些麻烦。任何建议将不胜感激!

1 个答案:

答案 0 :(得分: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()循环中删除丢弃前导空格的第二行。