繁体   English   中英

从C ++中的字符串中提取数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM