读书人

奇怪有关问题:小弟我有一个文本文件

发布时间: 2012-04-27 11:57:44 作者: rapoo

奇怪问题:我有一个文本文件,里面有好多条记录,我想把里面的一个乱码用空格替换掉,不知如何实现?我本用 TStringList *txtlist=new
我本想用 TStringList *txtlist=new TStringList;
String ss;

TStringList *txtlist=new TStringList;

txtlist-> LoadFormFile( "c:\\mytxt.txt ");
for(int i=0;i <txtlist-> Count;i++)
{
ss=txtlist-> Strings[i];
if(ss.Pos( "字符串 ")> 0)
ss=StringReplace(ss, "字符串 ", " ",-----------);
txtlist-> Strings[i]=ss;
}
txtlist-> SaveToFile( "c:\\mytxt.txt ");

delete txtlist;
现在问题是:
主要是用这种方法读不出记录时,只有第一行的一部分数据

不知还有其它什么办法可以实现?

用C来读,但如何进行替换呢?

万分感谢!

[解决办法]
改了改,好好的啊
凡是“字符串”变化成 空格 存成新名字mytxt1.txt

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String ss;
TStringList *txtlist=new TStringList;
txtlist-> LoadFromFile( "mytxt.txt ");
for(int i=0;i <txtlist-> Count;i++)
{
ss=txtlist-> Strings[i];
TReplaceFlags Flags;
Flags < <rfReplaceAll;
if(ss.Pos( "字符串 ")> 0) ss=StringReplace(ss, "字符串 ", " ",Flags);
txtlist-> Strings[i]=ss;
}
txtlist-> SaveToFile( "mytxt1.txt ");
delete txtlist;
}
[解决办法]
TStringList的LoadFromFile一般只能处理文本,如果你的文件中有文本结束符(0x1A)或字串结束符(0x00),它就有问题了
C/C++的文件处理能力是很强的,最简的,用C标准函数就可以实现你的要求
1.用rename将mytxt.txt改名,如mytxt.bak
2.用fopen打开文件mytxt.bak,并新建文件mytxt.txt
3.用getc逐一读文件mytxt.bak,并判是否为乱符,如果是,改为空格写入mytxt.txt,否则直接写入文件mytxt.txt
4.重复3直到mytxt.bak文件结束
5.如果必要,删除文件mytxt.bak


[解决办法]
WideString( unicode ) 然後再理。理完再回。

可是如果你有些特殊的字法 unicode ,就失那字了。
100% 正,要期待中文准及件的一了。

要不你就做次, unicode方式一次, c方式一次。 比一下,智能取一,最大努力不出。
[解决办法]
我觉得关键是乱码怎么确定,比如:

"我觉得关际锹衣朐趺慈范? " " '际 '的第一位编码改成空格就好了 "

这里面从哪里开始是乱码?无从得知啊

读书人网 >C++ Builder

热点推荐