从流和整数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- */
有没有直接解决方案来做这样的事情,还是我必须做以下事情?
答案 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;
}
}