初级问题,字符串截取 如有字符串:1-abcdefg,如何把1截取出来并转成int,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用MFC的CString的Left,Right,或Mid函数都可以或者使用C++的substr截取然后用atoi转换 你是以“-”作为分隔符吗?可以查找字符串,从这个字符串中查找“-”前面的字符串,然后把这串字符串转化为int 如果格式都一样的,那可以试这样.char a[] = "1-abcdefg";int i = *(&a[0]) - 48 //i等于1 CString ts = "1-abcdefg";TCHAR tc = ts.GetAt(0);int ti = (int)tc - 48; 其实有很多方法1、若你的数字始终在左边,直接atoi或atol即可,因为这两个函数本身就具有判断,会先剔除字符串中的空格,然后处理从左至右的数字,若第一个字符就不是数字(非空格)的话,返回0如int n=atoi(" 234");结果n=234;2、若你的数字在字符串的中间,那只能用strchr先找到第一个数字了,再获取如const char *str="asdf123sad;fk";int youratoi(const char *pstr){int nResult=0;char *p=NULL;for(int i=0;i<=9;i++){p=strchr(pstr,'0'+i);if( p )break;}if(p) nResult=atoi(p);return nResult;} TCHAR buf[] = _T("1-abcdefg"); TCHAR str[10] ={0}; int d = 0; sscanf(buf, "%d-%s", &d, str); _stprintf(str, _T("%d"), d); AfxMessageBox(str); 用atoi函数即可。atoi("123abc") = 123atoi("22") = 22 先用GetAt取字符,再用atoi转换成整型 CString strCource = _T("1-abcdefg");int res = _ttoi(strSource.Left(strSource.Find(_T("-")))); 呵呵~估计LZ的问题没这么简单,要看LZ的具体情况了 csdn抽风了?一会就要重新登录,记住一周是摆设? 如何根据GridCtrl里的数据画出线? 求组--字符串位置反转问题 实现对EXCEL操作的DLL文件,是不是要特别改动??急急急! 一般一个项目,如果一个朋友牵线接到的,那么应该给这个朋友百分之多少提成呢? 调试问题??(在线等) 问问原始套接字的迷惑。 怎样画流动矩形? CString类型的怎么转化为int型? 有关坐标系的问题 VS2008中怎么从CDaoRecordSet类派生新类啊! Direct3D环境下底层开发界面对要求支持中文输入该如何做
或者使用C++的substr截取
然后用atoi转换
可以查找字符串,从这个字符串中查找“-”前面的字符串,然后把这串字符串转化为int
int i = *(&a[0]) - 48 //i等于1
TCHAR tc = ts.GetAt(0);
int ti = (int)tc - 48;
1、若你的数字始终在左边,直接atoi或atol即可,因为这两个函数本身就具有判断,会先剔除字符串中的空格,然后处理从左至右的数字,若第一个字符就不是数字(非空格)的话,返回0
如int n=atoi(" 234");结果n=234;
2、若你的数字在字符串的中间,那只能用strchr先找到第一个数字了,再获取
如
const char *str="asdf123sad;fk";
int youratoi(const char *pstr)
{
int nResult=0;
char *p=NULL;
for(int i=0;i<=9;i++)
{
p=strchr(pstr,'0'+i);
if( p )
break;
}
if(p) nResult=atoi(p);
return nResult;
}
TCHAR buf[] = _T("1-abcdefg");
TCHAR str[10] ={0};
int d = 0;
sscanf(buf, "%d-%s", &d, str); _stprintf(str, _T("%d"), d);
AfxMessageBox(str);
atoi("22") = 22
CString strCource = _T("1-abcdefg");
int res = _ttoi(strSource.Left(strSource.Find(_T("-"))));