MFC CString类型转换到数组
4个回答
展开全部
有点没懂你的意思, 如果是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++;
}
}
#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 *,然后遍历其中的元素,将数字字符转换为数字。
展开全部
类似的程序做过不少了, 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++;
}
}
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 那些就看你选择了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CString Str="1,2,3,4";
int a[4];
sscanf(Str,"%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
int a[4];
sscanf(Str,"%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
更多追问追答
追问
您真聪明……
追答
不对么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
atoi、_atoi64或atol
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询