首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于把TXT文档里的数据存到数组里的有关问题

2012-03-09 
关于把TXT文档里的数据存到数组里的问题。我有一个TXT文档,里边的数据用空格,TAB 还有回车分隔开。我用的软

关于把TXT文档里的数据存到数组里的问题。
我有一个TXT文档,里边的数据用空格,TAB 还有回车分隔开。我用的软件是VC++6.0,我想把txt里的数据读出,存到一个数组里。我写了如下代码,
  CString para;
CString cs="E:\\lll\\abc\\全国火车站.txt"; 
CStdioFile wfile(cs,CFile::modeRead);
int nFileLen = wfile.GetLength();//获得文件长度 
LPTSTR lpText =para.GetBuffer(nFileLen+1); 
wfile.Read(lpText,nFileLen);//读取文件内容 
lpText[nFileLen] = _T('\0');
para.ReleaseBuffer();
wfile.Close();
CStringList restokenn;
Tokenize(para," \n",&restokenn,TRUE);//第二个元素我写的是空格TAB\n(里边TAB显示出不来)

void Tokenize(CString s, CString delimits, CStringList* pList, BOOL trim=FALSE, CString nullSubst="")
{
ASSERT(!s.IsEmpty() && !delimits.IsEmpty());
s += delimits[0];
for(long index=-1;(index=s.FindOneOf((LPCTSTR)delimits))!=-1;)
{
if(index != 0)
{
pList->AddTail(s.Left(index));
}
else if(!trim)
pList->AddTail(nullSubst);
s = s.Right(s.GetLength()-index-1);
}
}
然后我调试时发现,我的数组每个位置取到了一整行的数据,而不是每一个元素。(每一行包含了很多用空格或者TAB分开的数据)。我该怎么改啊?
  还有我写了如下代码来取出txt的数据。
  ifstream ifs("全国火车站.txt");
string para;
CString str;
while(!ifs.eof())
{
ifs>>para;
str.LoadString(str);
}
  编译时报错
error C2065: 'string' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'para'
error C2065: 'para' : undeclared identifier
 我已经加了头文件#include <fstream.h>。

[解决办法]
#include <fstream.h>
改为#include <fstream>
[解决办法]
你这种方式本来就是逐行读取文件内容的嘛
然后可以对每读取到的一行进行判断,以你说的空格或者回车符作为分割点,将数据存入数组中。
另外楼上的改了引用头文件,是不是该加个:unsing namespace std;
[解决办法]
用token
[解决办法]
用到string的话,也需要引用库头文件
#include <string>
using namespace std;
[解决办法]
token是VC7及以上版本才有的了

热点排行