[英]Extracting numbers from a string in C++
假设我有以下char数组:
char *word="R12_X8_10";
位数不是固定的,但相对于非数字字符的位置是固定的。 我如何不加提炼地提取数字? 通过拆分单词,我应该得到{“ 12”,“ 8”,“ 10”}。
就像我在Java中做过很多次一样,这应该是一件容易的事,但是在C ++中,这却使我费劲。
C ++流方式是获取或简单地忽略标记字符。 例如,忽略它们可以使用:
const char *word = "R12_X8_10";
int i, j, k;
std::stringstream ss(word);
ss.ignore(1) >> i;
ss.ignore(2) >> j;
ss.ignore(1) >> k;
甚至(如果可读性更强,则更加紧凑):
((ss.ignore(1) >> i).ignore(2) >> j).ignore(1) >> k;
(不相关,但请注意const
代表word
因为不应将字符串乱码分配给非const指针)。
你可以试试看
int a,b,c;
char *word="R12_X8_10";
sscanf(word,"R%d_X%d_%d",&a,&b,&c);
我知道这是一个c ++系统,但是如果包含stdio.h,我也知道scanf和sscanf可与c ++编译器一起使用。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.