MFC CString类型转换到数组

比如有CString="1,2,3,4";把里面的1234分别代入inta[4]里面去... 比如有CString="1,2,3,4";
把里面的 1 2 3 4分别代入int a[4]里面去
展开
 我来答
hk_ziyoutt
2012-09-10 · TA获得超过114个赞
知道答主
回答量:68
采纳率:100%
帮助的人:60.6万
展开全部
有点没懂你的意思, 如果是CString到字符型的转换,那么采用strncpy就可以实现,不过转换后数组中的元素应该为:{‘1’,‘,’,‘2’,‘,’,‘3’,‘,’,‘4’}(为了容易区分分隔符与数组元素本身,我采用半角中文逗号来表示分隔符)。如果你需要将字符型数字转换为数字本身的值,则需要做一个过滤以及减法运算,转换后数组中的元素是:{1,2,3,4}。

#define ARRAY_MAX_SIZE 255

CString str = "1,2,3,4";
unsigned char c_str[ARRAY_MAX_SIZE] = {0};
int a[ARRAY_MAX_SIZE] = {0};
int str_len = str.GetLength();
int i = 0, k = 0;

strncpy(c_str, str, str_len);

for(i = 0; i< str_len; i++)
{
if('0' <= c_str[i] && c_str[i] <= '9')
{
a[k] = c_str[i] - '0';
k++;

}

}
更多追问追答
追问
对对,就是CString转换为int数组类型
追答
就像如上代码,你可以先将CString转换为char *,然后遍历其中的元素,将数字字符转换为数字。
MORAINTES
推荐于2016-09-17
知道答主
回答量:22
采纳率:0%
帮助的人:13.5万
展开全部
类似的程序做过不少了, 1楼的程序有点小问题, 会进入死循环, 中间要加几句

void CStringToIntArr(CString str,int data[])
{
int i=0,pos;
while(str!="")
{
pos=str.Find(',',0);
if(pos<0)//要对最后一个数据作处理, 要不会死循环
{
data[i]=atoi(str);//
break;//
}
data[i]=atoi(str.Left(pos));
str.Delete(0,pos+1);
i++;
}
}
追问
如果CString是多行的并且逗号和换行都是隔开的,是不是pos=str.Find('\n',0); 呢?
追答
是的,\t  \r 那些就看你选择了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友31c5511
2012-09-10
知道答主
回答量:9
采纳率:0%
帮助的人:3.8万
展开全部
CString Str="1,2,3,4";
int a[4];
sscanf(Str,"%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
更多追问追答
追问
您真聪明……
追答
不对么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ltb0414
2012-09-10 · TA获得超过116个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:171万
展开全部
atoi、_atoi64或atol
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式