MFC:获取编辑控件文本并将其拆分为二维数组?
MFC: Getting edit control text and splitting it to 2 dimensional array?
我在窗体上有编辑控件和屏蔽的编辑控件。在掩码控件中写入和失去焦点后,一个数字(最多 99),编辑框将填充邻接矩阵。稍后我想用它来表示图中的边和查找循环。我像这样从编辑框中提取文本:
CString x;
GetDlgItemText(IDC_EDIT, x);
失去焦点后编辑框中的数据如下所示:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
但是是否可以将所有数字(这里的分隔符是“”)拆分成二维数组,就像 C++ 向量一样?
您可以使用 stl
(istringstream
和 getline
的组合)或选择更 MFC
的方法:
CString s;
// ...
int lpos = 0;
for (CString line = s.Tokenize(_T("\n"), lpos); lpos > 0; line = s.Tokenize(_T("\n"), lpos))
{
int cpos = 0;
for (CString cell = line.Tokenize(_T(" "), cpos); cpos > 0; cell = line.Tokenize(_T(" "), cpos))
{
// your cell processing
}
}
我在窗体上有编辑控件和屏蔽的编辑控件。在掩码控件中写入和失去焦点后,一个数字(最多 99),编辑框将填充邻接矩阵。稍后我想用它来表示图中的边和查找循环。我像这样从编辑框中提取文本:
CString x;
GetDlgItemText(IDC_EDIT, x);
失去焦点后编辑框中的数据如下所示:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
但是是否可以将所有数字(这里的分隔符是“”)拆分成二维数组,就像 C++ 向量一样?
您可以使用 stl
(istringstream
和 getline
的组合)或选择更 MFC
的方法:
CString s;
// ...
int lpos = 0;
for (CString line = s.Tokenize(_T("\n"), lpos); lpos > 0; line = s.Tokenize(_T("\n"), lpos))
{
int cpos = 0;
for (CString cell = line.Tokenize(_T(" "), cpos); cpos > 0; cell = line.Tokenize(_T(" "), cpos))
{
// your cell processing
}
}