如何从流中读取前N个数字作为整数?

时间:2016-10-04 19:49:04

标签: c++ stream

从流和整数N,我必须得到流的N个第一个数字字符所代表的整数。

以下是一些例子:

/*------------------------------------------------*/
/*  N  |   Stream content        | Expected value */
/*-----|-------------------------|----------------*/
/*  2  |  123a52test             |  12 (int)      */
/*  2  |  123552a52test          |  12 (int)      */
/*  2  |  12test                 |  12 (int)      */
/*  2  |  12                     |  12 (int)      */
/*  4  |  123552a52test          |  1235 (int)    */
/*  4  |  122a52test             |  -error-       */

有没有直接解决方案来做这样的事情,还是我必须做以下事情?

  1. 从N个字符构建字符串
  2. 创建一个字符串流并使用它来提取整数

2 个答案:

答案 0 :(得分:1)

在C ++中没有内置的方法可以做到这一点。但是,您可以“读取”完全N个字符,然后将它们转换为整数。

char number[N];
stream.read(number,N);
return atoi(number); // or stringstream ss; ss << number; ss >> ret; return ret;

答案 1 :(得分:0)

你可以使用这样一个简单的循环:

for (int i = 0; i < N; i++) {
    if (isdigit(stream[N])) {
        out*=10;
        out+=stream[N]
    } else {
        err = 1; // error flag;
        break;
    }
}