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

  • 本文关键字:数字 整数 读取 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. 创建一个stringstream并使用它来提取整数

在c++中没有内置的方法来做到这一点。但是,您可以"读取"恰好N个字符,然后将它们转换为整数。

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

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

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

相关内容

  • 没有找到相关文章

最新更新