C++提取字符串中的整数
代码示例:
int ExtractNumber(char* str) { int numberCnt = 0; string s = str; size_t begin = 0, end = 0; if(!str){ return 0; } while(end != std::string::npos) //std::string::npos是一个常量,它等于size_t类型可以表示的最大值,用来表示一个不存在的位置,类型一般是std::container_type::size_type。 { begin = s.find_first_of("0123456789", end); //查找并返回第一个出现数字字符(包含于"0123456789")的位置,如果没找到就返回string::nops if(begin != std::string::npos) // we found one { end = s.find_first_not_of("0123456789", begin); //查找并返回第一个不是数字字符的位置 string num = s.substr(begin, end - begin); //提取两个位置之间的子字符串 int number = atoi(num.c_str()); //将数字字符串转成整型 ALOGD("ExtractResolution number : %d\n", number); numberCnt++; } else { ALOGE("ExtractResolution no number in string: %s\n",s.c_str()); break; } } return numberCnt; }
说明:首先用string::find_first_of("0123456789", end);获取从位置end开始的第一个数字的位置,然后通过string::find_first_not_of("0123456789", begin);获取从位置begin开始第一个不是数字的位置,最后取两个位置之间的子字符串使用atoi转成整型数字。
posted on 2023-01-28 17:05 sheldon_blogs 阅读(1036) 评论(0) 编辑 收藏 举报