永发信息网

那位C++大神帮个忙啊 在MFC下 CString str=“0022”如何提取出里面的22 然后转换成int的22 求解答

答案:6  悬赏:50  手机版
解决时间 2021-01-16 00:04
那位C++大神帮个忙啊 在MFC下 CString str=“0022”如何提取出里面的22 然后转换成int的22 求解答
最佳答案
double dAns = _tstof(str);
或者

int nAns = _tstoi(str);

_tstof和_tstoi是会自动排除掉前面的0的,只要你这个字符串是数字格式的。

另外,如果这两个函数编译器不认识的话,用_ttof和_ttoi试试追问这个double dAns = _tstof(str一定是double 吗追答比如str是"0024.32"的话,_tstof转出来就是24.32
全部回答
直接使用atoi,会自动把整数前面多余的0过滤掉的。

int Num = atoi((LPCSTR)(LPCTSTR)str);追问楼主 你这个方法不行啊
CString strtemp;
strtemp = str.Rigth(2);
int itemp = _ttoi(strtemp);追问有没用通用的办法
就是能把0后面的数字提取出来追答CString str1 = "002222222222222222", str2;
int itemp = str1.GetLength() - str1.ReverseFind('0');
str2 = str1.Right(itemp - 1);
CString str=“0022”;
int a;
sscanf(str, "%04d", &a);
CSting str,ST1,ST2,ST3;
str="0022";
ST1=str[2];用数组的方式最好,一个一个数字提出来,这里是提出第一个2
ST2=str[3];这里提出第二个2,
ST3=ST1+ST2;
char* Tem=(char*)(LPCTSTR)ST3;
int h = atoi(ST3);

就算str有更多的字符在里面,都可以用数组的提出来,然后相加在一起,最后再转就OK了追问我只想提取出后面分数字 万一是0001你这个方法就不行了追答嗯?数字为0001就不行?什么意思?0001你想提取哪个数字?追问我就是想提取0后面的数值追答假设CSting str=“001002003”
用数组你可以提取到任何一个数字。如下:
str[0]对应的是0
str[1]对应的是0
str[2]对应的是1
str[3]对应的是0
str[4]对应的是0
str[5]对应的是2
str[6]对应的是0
str[7]对应的是0
str[8]对应的是3
这样够清楚了吗?如果实在字串太长,你用一个for循环写出来就行,
然后你把那些数字整合成一个整数,那就相加就行了,最后
char* Tem=(char*)(LPCTSTR)ST3; 强制类型转换CString转成char
int h = atoi(ST3); char转成i追问不你这个效果 我只要求4位 而且没法确认这个CString 类型里面会有什么 我输入0001 就要你提取出1 如果我输入的是0101就要提取出101 知道吧追答哦,那你应该早说点嘛,大概了解你的需求了,我这个办法确实不通用,不过改一下也可以,加上判断就好~~~就是按顺序提取全部数字就判断一下,假设你说的str=0101,str【0】判断下是否大于0咯,结果是0,再取str[1]结果判断大于0,则这个是你需要的数值的最高位了,然后再取str的最后一个字符数字str[i]判断如果是0,继续取str[i-1]判断,如果不是0,那要取什么不就知道了?不知道这样说你是否明白,如果还不明白,那你再找找吧。
{
...
CString cstr="0022";
string str;
for( int i=0; iif( isalnum(cstr[i]) )
str[i]=cstr[i];
int a=atoi(str.c_str());
...
}追问你这个是怎么判断的 isalnum 只能判断是不是数字啊 无法判断出 0后面的东西吧追答用这个函数替换它,符合你的要求
bool IsalNum(char c)
{
static bool first=false;
if( c > '0' && c <= '9' )
{
first=true;
return true;
}
else if( c == '0' && first)
return true;
return false;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
到底LED伤眼的原因是什么
区块链技术中的智能合约是什么?
赞美人物优秀品质,描写思维突然打开的成语
自己可以开家私人银行吗
关于GRE协议的几个问题
十四分米七厘米和14.7厘米谁大
六年级数学题 如图,以O1、O2为圆心的两个半圆
怎样把猪骨高汤拉白
异地对象来看楼主,让楼主一手安排吃饭和电影
单选题下列词语中没有错别字的一项是A.重新振
BAREBONES野外刀怎么样?
学校买3把椅子和4张桌子共用156元,已知买两
chip LED基板 钻孔和锣槽有什么区别
王均遥怎么死的
电脑上qq怎么退出登录
推荐资讯
小明?的妈妈有四个孩子第一个叫大豆第二个叫
有人在杨凌会上卖德国三用剃须刀宝马牌的
请大神帮我p一下照片
青海拦隆口至东峡的距离
轻奢宅是什么意思
——Which of the two books do you want?—
1.25x(8x0.8)怎样做
红酒开口后必须喝完么?
豆梨是杜梨吗
武汉纺织大学阳光校区到黄鹤搂怎么走
典尚地址好找么,我有些事要过去,
不想干就叫10几个同学一起辞职.但是公司说
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?