【MFC】手把手教你如何将获取的字符串转换为数组

简单步骤

开发环境

VC++6.0


工程创建操作

【MFC】手把手教你如何将获取的字符串转换为数组_第1张图片


【MFC】手把手教你如何将获取的字符串转换为数组_第2张图片

【MFC】手把手教你如何将获取的字符串转换为数组_第3张图片


界面设计

【MFC】手把手教你如何将获取的字符串转换为数组_第4张图片



功能实现代码

void CBlogDlg::Oninout() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int d,r,len;
	a=NULL;			 //前面申请了double** 的变量a

	/*动态申请数组*/
	a=(double **)malloc(m_n*sizeof(double *));
        for(i=0;i<m_n;i++)
          a[i]=(double*)malloc(sizeof(double *)*m_n);

	/*字符串转换成数组*/
	char c[100];   //用于存储每个输入的数
	memset(c,0,sizeof(c));  
	char * ch=m_input.GetBuffer(m_input.GetLength() + 1);   //CString转char *
	d=0;     //数组的行
	r=0;     //数组的列
	len=strlen(ch);   //输入总的字符串
	char str[100];    //中间转换字符串
	for(i=0;i<len;i++)
	{
		sprintf(str,"%c",ch[i]);
		if(ch[i]==' ')
		{
			a[d][r]=atof(c);
			r++;
			memset(c,0,sizeof(c));
			continue;
		}
		if(ch[i]=='\r')             //回车为\r\n所以在这里需要i++
        {
			a[d][r]=atof(c);
			d++;
			i++;
			r=0;
			memset(c,0,sizeof(c));
			continue;
		}	
		strcat(c,str);
	}
	a[d][r]=atof(c);
	MessageBox("输入成功~~~");
}

void CBlogDlg::Onoutput() 
{
	// TODO: Add your control notification handler code here
	CString cstr,ccstr;
		m_list.AddString("输入数组为:\n");      
        for(i=0;i<m_n;i++)
    {
			cstr.Empty();
        for(j=0;j<m_n;j++)
		{	
			ccstr.Format("%g ",a[i][j]);
			cstr=cstr+ccstr;
		}
		m_list.AddString(cstr);
    }
}


实现效果

【MFC】手把手教你如何将获取的字符串转换为数组_第5张图片




可能碰到问题

运行程序出问题

问题如下图,直接设置为静态链接库就可以解决。

解决方法:工程->设置

【MFC】手把手教你如何将获取的字符串转换为数组_第6张图片


显示问题

1.编辑框和ListBox框的属性未设置多列。

2.ListBox属性未取消分类的选项(导致显示是按数据大小顺序显示的)


你可能感兴趣的:(C++,mfc,VC)