永发信息网

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

答案:6  悬赏:50  手机版
解决时间 2021-01-16 00:04
  • 提问者网友:练爱
  • 2021-01-15 00:41
那位C++大神帮个忙啊 在MFC下 CString str=“0022”如何提取出里面的22 然后转换成int的22 求解答
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-01-15 02:20
double dAns = _tstof(str);
或者

int nAns = _tstoi(str);

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

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

int Num = atoi((LPCSTR)(LPCTSTR)str);追问楼主 你这个方法不行啊
  • 2楼网友:渊鱼
  • 2021-01-15 07:33
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);
  • 3楼网友:迟山
  • 2021-01-15 06:31
CString str=“0022”;
int a;
sscanf(str, "%04d", &a);
  • 4楼网友:底特律间谍
  • 2021-01-15 05:13
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,那要取什么不就知道了?不知道这样说你是否明白,如果还不明白,那你再找找吧。
  • 5楼网友:不想翻身的咸鱼
  • 2021-01-15 03:35
{
...
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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯