高分100文本文件操作难题

xxy119 2007-12-07 11:31:01
有一个unicode文本文件,里面内容以Table制表符分隔,一行结尾用回车换行结尾.
请问用什么方法操作,读取每一行的每一字段内容然后存入access数据库中.
内容例如:
abc def fewf fwef
joii fwfwef wefwef fewfwfe fjwef323
nfwefwa 23re23r rewfws fsf fewfwef
...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxy119 2007-12-18
  • 打赏
  • 举报
回复
好的,不错,给分.
jacknes009 2007-12-10
  • 打赏
  • 举报
回复
呵呵,头两个字节也考虑下,不过现在有些把数据搞成字符串的形式,然后去存储
jacknes009 2007-12-10
  • 打赏
  • 举报
回复
烤去研究研究下,最近也在搞这方面的,不过是韩文的
vc8fans 2007-12-08
  • 打赏
  • 举报
回复
先试楼上提示的
Waiting4you 2007-12-07
  • 打赏
  • 举报
回复
没写完按了Tab+回车不小心发上来了(foxfire用起来不顺手的说),接着

    while(getline(ifstm , s))  //一行行地读
{
wstringstream sstm(s);
wstring sWord;
while(sstm >> sWord)
{
//这里sWord是分解出来的一个个词
}
}


要:
#include <fstream>
#include <string>
#include <sstream>
ydlchina 2007-12-07
  • 打赏
  • 举报
回复
http://www.ccrun.com/view.asp?id=254
Waiting4you 2007-12-07
  • 打赏
  • 举报
回复
我还是觉得你应该分开来问,你是不会读文件还是不会写数据库?

因为不知道你的数据表结构,我只说读文件部分
这种格式用STL读简直大容易了:

wifstream ifstm("c:\\t.txt"); // c:\t.txt就你你上面的部分
wstring s;

while(ifstm >> s)
{
// s里就是你的数据了,第一次是abc,再循环是def,...
}


不过上面的代码是不分行的,也就是说它是一个词一个词地读
如果要分行:
wifstream ifstm("c:\\t.txt"); // c:\t.txt就你你上面的部分
wstring s;


ershixong_2353 2007-12-07
  • 打赏
  • 举报
回复
打开数据库,“文件”--> "获取外部数据"--> “导入”,然后按照提示进行就行了
Waiting4you 2007-12-07
  • 打赏
  • 举报
回复
确实考虑得不周全,呵呵
是unicode文本, 我把它当成从ansii文本读入成unicode数据了:-P

这个应该周全了吧? 另外建议楼主不给分不要说出来,心里有数就可以了,不然会吓住想回答你问题的人的:-)


#include <string>
#include <sstream>
#include <windows.h>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE fh= ::CreateFile("c:\\t.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS,NULL);
if(fh != INVALID_HANDLE_VALUE)
{
HANDLE hMap = ::CreateFileMapping(fh, NULL, PAGE_READONLY,0,0,NULL); // Use filemapping to load entire file
if(hMap != NULL)
{
LPVOID pData = ::MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if(pData != NULL)
{
if((*(WORD*)pData) == 0xfeff) // Is Unicode
{

wchar_t *pwszData = (wchar_t*)pData;
pwszData++;
wstringstream sstm(pwszData);

wstring sWord;
while(sstm >> sWord)
{
//这里sWord是分解出来的一个个词
}

}
else
{
// 不是Unicode文本
}
::UnmapViewOfFile(pData);
}
::CloseHandle(hMap);
}
::CloseHandle(fh);
}
}
//---------------------------------------------------------------------------
xxy119 2007-12-07
  • 打赏
  • 举报
回复
考虑的太不周全了,连头两个字节都没有考虑.不给分.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧