//数据读取分割存储 void Dataimport::read(CString& input, CString& input1) { CFileDialog dlgFile(TRUE, _T("txt"), NULL, OFN_EXPLORER, _T("(文本文件)|*.dat")); if (dlgFile.DoModal() == IDCANCEL) return; CString trFileName = dlgFile.GetPathName(); CStdioFile rfile; if (!rfile.Open(trFileName, CFile::modeRead))AfxMessageBox(_T("文件未找到")); CString buf = _T(""); CString bufer = _T(""); CString str1 = _T(""); int ind = 1; while (rfile.ReadString(buf)) { if (ind == 1) { bufer += buf + _T("\r\n"); } if (remove(buf) == str1) { ind = 1; } } if (ind == 0) { AfxMessageBox(_T("输入数据格式不符合")); return; } input1 = trFileName; input = bufer; CStringArray array; SplitStringArray(bufer, '\r', array); int Pc1 = _tstof(array[0]); int Pc2 = _tstof(array[Pc1 + 1]); Pcount = Pc1 + Pc2; unk = Pc2; Psum = new Point[Pcount]; for (int i = 0; i < Pc1; i++) { CStringArray buf1; SplitStringArray(array[i + 1], ',', buf1); CString a = buf1[0]; Psum[i].index = buf1[0]; Psum[i].x = _tstof(buf1[1]); Psum[i].y = _tstof(buf1[2]); Psum[i].flag = 0; Psum[i].flag1 = 0; } CStringArray buf1; SplitStringArray(array[Pc1 + 2], ',', buf1); int m = 0; for (int i = Pc1; i < Pcount; i++) { Psum[i].index = buf1[m]; Psum[i].x = 0; Psum[i].y = 0; Psum[i].flag = 1; m++; } Lcount = _tstof(array[Pc1 + 3]); Lsum = new Line[Lcount]; for (int i = 0; i < Lcount; i++) { CStringArray buf2; SplitStringArray(array[Pc1 + 4 + i], ',', buf2); Lsum[i].start = buf2[0]; Lsum[i].end = buf2[1]; Lsum[i].length = _tstof(buf2[2]); Lsum[i].amangle = 0; } Acount = _tstof(array[Pc1 + 4 + Lcount]); Asum = new Angle[Acount]; int a = -1; for (int i = 0; i < Acount; i++) { CStringArray buf2; SplitStringArray(array[Pc1 + 5 + Lcount + i], ',', buf2); Asum[i].startP = buf2[0]; Asum[i].endP = buf2[1]; Asum[i].angle = _tstof(buf2[2]); if (Asum[i].angle == 0) { a++; } Asum[i].num = a; } 解释一下
时间: 2024-04-19 09:25:10 浏览: 131
这段代码实现了数据的读取、分割和存储。首先,通过对话框选择一个文本文件进行读取。然后,逐行读取文件内容,并根据特定的格式进行处理。其中,数据的分割使用了自定义的SplitStringArray函数,将每一行的字符串按照指定的分隔符进行拆分,并保存到一个数组中。
接下来,根据特定的规则解析拆分后的数据。首先,获取Pc1和Pc2的值,它们分别表示点的数量和未知点的数量。然后,根据Pc1和Pc2的值创建一个Point类型的数组Psum,并将点的索引、x坐标、y坐标以及标志位等信息存储到数组中。
接着,获取Lcount的值,表示线的数量。然后,根据Lcount的值创建一个Line类型的数组Lsum,并将起始点、结束点、长度以及角度等信息存储到数组中。
最后,获取Acount的值,表示角的数量。然后,根据Acount的值创建一个Angle类型的数组Asum,并将起始点、结束点、角度以及编号等信息存储到数组中。
整个过程中,还会进行一些错误处理,例如判断文件是否存在、判断输入数据格式是否符合要求等。如果发现输入数据格式不符合要求,则会弹出相应的提示信息。
这段代码主要用于实现数据的读取和存储功能,具体的数据处理逻辑可能需要根据实际需求进行修改和完善。
相关问题
“void CListBox::GetText(int,CString &) const”: 无法将参数 2 从“char *”转换为“LPTSTR”
&)
The GetText function is a member function of the CListBox class in MFC (Microsoft Foundation Classes). It is used to retrieve the text of a specified item in the list box.
The function takes two parameters: the index of the item whose text is to be retrieved, and a reference to a CString object where the text will be stored.
The syntax of the function is:
void CListBox::GetText(int nIndex, CString& rString) const;
Here, nIndex is the zero-based index of the item whose text is to be retrieved, and rString is a reference to a CString object where the text will be stored.
The function returns void, which means it does not return any value. Instead, the text of the specified item is stored in the CString object passed as the second parameter.
For example, to retrieve the text of the first item in a list box and store it in a CString object named strText, you can use the following code:
CString strText;
m_myListBox.GetText(0, strText);
Here, m_myListBox is an instance of a CListBox control, and GetText is called with the index parameter set to 0 and the CString reference parameter set to strText. The text of the first item in the list box will be stored in the strText variable.
VS编程“void CListBox::GetText(int,CString &) const”: 无法将参数 2 从“char *”转换为“LPTSTR” 解决方法
&)"函数作用是获取列表框中指定项的文本内容,并将其存储到一个CString对象中。
具体来说,该函数的参数包括一个整数值(表示要获取文本内容的项的索引),以及一个CString对象的引用(表示用于存储文本内容的字符串)。
该函数的返回值为void,即没有返回值。在调用该函数时,传递的CString对象必须已经被创建并分配了足够的存储空间,以便能够存储获取到的文本内容。如果传递的索引值超出了列表框中的有效范围,则该函数将不执行任何操作。
阅读全文