提取字符出现的一个小问题..
现有test.txt文件
内容如下:
数量:13个
名称:成都 上海 乌鲁木齐
广州 深圳
西安 重庆 伦敦 天津
浙江 安徽 河南 河北
数量:2个
名称:广州 深圳
我想提取中间的数字13,转换为数值,因为循环中要用到
因为数字是未知的,所以不能用str.find( "13 ")-48这样的方法来实现
我用下面的方法:
......
class IsNum
{
public:
bool operator()(char c)
{
if(c> = 48 && c <= 57)
return false;
return true;
}
};
......
tmp.erase(remove_if(tmp.begin(),tmp.end(),IsNum()),tmp.end());
......
已经能够提取到想要的字符了
用count = tmp- '0 ';
但就是不能把它转换成数值
感觉就差一步了,郁闷ING
[解决办法]
有专门的库函数啊,包括你写的判断数字还是字母的函数也有。
atoi和itoa,一个是字符串转整数,一个是整数转字符串。在帮助里搜下有完整说明。
[解决办法]
#include <cctype>
using namespace std;
.....
isdigit(c)
如果c是数字返回true
[解决办法]
...
istringstream t( tmp.substr(tmp.find(":")+2) );
t > >count; //get count
...