谁知道这样的功能如何实现?

来源:百度知道 编辑:UC知道 时间:2024/07/03 22:13:27
有一个文本文件格式为:
123049 203984 102384
123059 203984 113384
129049 203984 102584
123049 203984 112384
....
我想用VC编一个这样的简单软件,打开菜单-->选取上面的文本文件-->利用空格分隔将上述数据存为三维的数组

难点1:上述文本文件的行数不确定,这样这个三维数组会是个动态数组,可能特别大也可能特别小.
难点2:如何根据空格将一行数据分成三部分.

本人是菜鸟,希望能将代码和注释贴出来!
牵涉到巨大数据的问题,利用CString类的话似乎不太合适!

1、用new的方式, DWORD* p[3] = new DWORD [n][3];
或者通过STL的list或者vector来实现比较容易。

typedef struct _MyData
{
DWORD dw1;
DWORD dw2;
DWORD dw3;
} MyData;

std::list<MyData> m_Data; 抑或是
std::vector<MyData> m_Data;

通过CStdioFile 来读取文件,将数据压入数组。

2、字符串判断。

通过CStdioFile 的ReadString 读取一行。
CStdioFile file;
CString csLine;
file.ReadString( csLine ); // 读取

int nPos = csLine.Find(' '); // 查找空格位置
csOne = csLine.Left( nPos ); // 取子串

说说我对你问题的理解!
用VC编一个这样的简单软件,打开菜单-->选取上面的文本文件,那么最简单的肯定是用MFC,实现上述功能。
无可厚非的一定是利用CString类,能比较简单能实现你的功能。

不过为什么一定要三维呢?可以将三维变成三个一维数组。我用控制台写了一个简单的,你看看吧。当然一定要三维也行。
#pragma warning(disable:4786)
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>

using namespace std;

void main()
{
ifstrea