C++基于MFC 怎样将编辑框中的数赋值给数组?求具体代码

编辑框中内容如下:
1.0001
2.0009
3.8886
……
共100个数,排成一列

第1个回答  2012-05-08
分两步:先取得编辑框中的数值,再赋给数组。
取得编辑框数据:GetDlgItemInt(编辑框ID),返回值就是编辑框中的数据,为int型。
现在只需把取得的数值赋给数组。
给数组赋值的话,最好有点规律,不然要赋值一百次。
看了1L的回答,我好像跑题了,你要赋值给数组的是0001,还是1?
第2个回答  2012-05-07
如果a是编辑框中的

那么 需要分割了

西安GetDlgItemText 放入一个CString中

然后分割赋值给一个数组追问

请您给出具体一点儿的代码 万分感谢

追答

void CMy20120507mfcDlg::OnOK()
{
// TODO: Add extra validation here
CString str,tmp;
int i=0,j=0,k=0,nLen;
char arry[100][8]={0};
GetDlgItemText(IDC_EDIT1,str);
nLen = str.GetLength();
while (i!=nLen)
{
if (str.GetAt(i)=='\r')
{
arry[j][k]='\0';
tmp=arry[j];
AfxMessageBox(tmp);
j++;
k=0;
i++;
}
else
{
arry[j][k++]=str.GetAt(i);
}
i++;
}
}

好吧 MFC的程序从来问题多 我即使写对了 你那边也不一定对 你试试吧 反正我这边没什么问题

追问

您好!!您上面的代码是将编辑框中的内容按字符串形式赋值给了char[ ]数组,我想按照编辑框中的数据类型,将其内容赋值给double[ ],请高手指点,不胜感激!!

追答

一个道理

把tmp 用atof 转换成 float 放进去

追问

我将您的代码改为下列形式:
……
extern double y[99];
int index=0;
……
while (i!=nLen)
{
if (str.GetAt(i)=='\r')
{
arry[j][k]='\0';
tmp=arry[j];
j++;
k=0;
i++;
y[index++]=atof(tmp);
}
else
{
arry[j][k++]=str.GetAt(i);
}
i++;
}
调试后为y[ ]数组内存不能写,我再MFC中定义了全局变量double y[99],请问是什么原因,求高手指点

追答

我的没问题

我给你上图

追问

您好! 其实我是想把数组传递给matlab,C++中调用matlab引擎,我知道怎样将C++中的数组传递到matlab空间,我采用了您的代码,我觉得也是正确的,但是不知为什么运行时总会出现出现“exe文件出现断点”,我不知道为什么,求高手再给指点指点

追答

MFC 的东西 从来都不是说跟C或者C++ 一样简单

代码一贴出来 一看 就能找到问题

必须整个项目发过来看

追问

您好 我又发现了个问题 就是我的数据有的是10.0001的,这样是不是就不能定义为char arry[100][8]={0};了 ,我怀疑是这儿出了问题,求高手再次指点一下,谢谢您了!!!

追答

那就把二维长度加长点呗
arry[100][20]={0};

20应该够了吧

追问

嗯 非常感谢,我试了一下,发现新的问题,我改为8就好用了,可能是数据太大了,我的数据是24000个,10个数据时我试了好用但是最后一个数总是0,改为24000个程序就运行不了了,求高手再给指点一下,真的非常感谢你!!

追答

定义在函数体外 当做全局变量

追问

对 我定义的是全局变量 编译是没有错误的 我试验十个数据时前9位正常,最后一个数据都是0,我用new double*a=[24000],再把a给数组double y[24000],程序能运行了,只是到matlab空间后显示的全是0,最后一位是个10的-66次方的一个数,请问是什么原因,求高手指点!!

追答

不懂matlab 锻炼一下自己解决问题的能力吧

本回答被提问者采纳
第3个回答  2012-05-08
绑定一个cstring的变量到编辑框得到cstring的值
int a[100];下面代码大概这样
CString str="1.0001 2.0009 3.8886";
int tmp;
char *p=(LPCTSTR)str;int j=0;
for(int i=0;i<str.GetLength() &&j<100;i++){
if(p[i]=='.'&&p[i+1])a[j++]=atoi(p+i+1);
}
第4个回答  2012-05-07
你是不知道如何把编辑框的数值赋值给数组还是没有找到一个好的办法把编辑框的数值赋值给数组?追问

我是不知道如何把编辑框的数值赋值给数组

追答

一个最简单的办法,用向导给每一个编辑框定义一个浮点型数据变量,定义一个浮点型数组,
用一个按钮,当用户输入所有数据后点击按钮,在按钮消息函数中首先调用UpdateData(TRUE),然后把每一个控件变量赋值给相应的数组单元。这种方法很简单,但代码会很多,因为你要进行100次赋值。

c++ mfc中,比如想设计这样,有编辑框,有显示的框,比如怎样把这些框里的...
1.发送消息给静态文本时可以GetParent()->GetDlgItem(静态文本ID)->SendMessage(...);所以,派生自CEdit的类只需保存相关的静态文本ID值。2.你可以定义编辑框控制变量数组,实现控制所有的编辑框,方便和数组结合使用,方法为:假设你派生的类为CXXEdit 则在对话框中定义:define EDIT_COUNT 8 CXXEdit...

C++ VS中用MFC新建子类继承CEdit类,给编辑框赋予初值,怎么实现?
其实,用户要在对话框中使用定制控件,必须用DDX或者SubclassDlgItem函数子类化控件,这时PreSubclassWindow一定会被调用。如果用户直接创建定制控件窗口,CWnd::CreateEx函数就一定会被调用,控件窗口一定会被子类化以安装MFC消息泵。所以在MFC中,PreSubclassWindow是创建窗口的必经之路。所以重写PreSubclassWindow...

c++ mfc 中提取编辑框中数字的方法,新手,求大神!
方法很多,有一种方法是 先得到编辑框中的CString类型的数据,然后将CString转化为char 数组类型,然后取出相应的字符,再转化为需要的类型。或者直接用CString里的成员函数,直接就能查找相应字符。

C++ MFC 自定义函数中 给IDC_EDIT1 赋值,谢谢
在自定义函数中给对话框和form的控件赋值,必须首先得到对话框等窗口的指针。因此必须明确两者之间的关系,不能是纯粹的无关系,这样在MFC体系中是不合乎体系逻辑的。推荐办法:在对话框类做自定义函数(即:函数是类成员函数),这样在自定义函数中,就可以:GetDlgItem(IDC_EDIT1)->SetWindowText(_T(...

VC++MFC问题,怎样在按下按钮后,已文本形式保存指定编辑框中的内容
创建好类以后你就能够使用这个对话框中控件的信息以及对该对话框进行代码的修改了。回到刚才对话框的界面中,在你要保存的编辑框中点右键->添加变量;然后在弹出来的对话框中把控件变量复选框点中,类别选成Value,变量类型可以根据自己选。系统会自动创建一个与这个控件相关联的变量。如果你不能用这种...

写好了c+++ 的代码, 如何从文本框输入赋值给变量?
不用MFC的话,先通过文本框的ID获取到该控件的句柄,然后通过句柄获取里面的内容 你可以到msdn查阅一下下面的这个函数:int GetDlgItemText( HWND hDlg , int nID, LPTSTR lpStr, int nMaxCount) const;

c++中基于对话框的MFC,要怎么能向列表框中输入数据啊
显示数据用UpdateData( FALSE);

mfc如何将编辑框的内容读取到列表控件中?
1、MFC(MicrosoftFoundationClasses),同VCL类似,是一种ApplicationFramework,随微软Visual C++开发工具发布。MFC以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。2、该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有...

C++ mfc 如何设置子对话框中edit控件的初始默认值?
你用的是VC吗,直接改属性,或者给EDIT绑定一个变量,变量类型为DOUBLE,也可以是其他的,看你以后用什么了,然后在窗体初始化函数下让这个变量比如m_edit = 1,再加个UpdateData(0),也有可能是UpdateDate(1)我忘了,就行了,这样你以后用到这个值的时候也方便。

c++ mfc 怎么实现输入功能, 比如我要从键盘输入数字
cin>>a;scanf("%d",&a);这两种方式都是从键盘获得输入的数值。你把a的类型改变就可以获得不同的值了。另外mfc里面有的输入框的,在资源视图里面,你找到那个输入框,你右键点他后选择增加变量。然后这个变量值就会和你的这个输入框绑定了,输入多少,那个变量的值就会是多少,你就可以用那个值进行...

相似回答