从一个流和一个整数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- */
是否有一个直接的解决方案来做这样的事情,或者我必须做下面的事情?
- 从N个字符构建一个字符串
- 创建一个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;
}
}