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

奇怪有关问题:小弟我有一个文本文件,里面有好多条记录,小弟我想把里面的一个乱码用空格替换掉,不知怎么实现?小弟我本用 TStringList *txtlis

2012-04-27 
奇怪问题:我有一个文本文件,里面有好多条记录,我想把里面的一个乱码用空格替换掉,不知如何实现?我本用 TSt

奇怪问题:我有一个文本文件,里面有好多条记录,我想把里面的一个乱码用空格替换掉,不知如何实现?我本用 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方式一次。 對比一下,智能選取一個,盡最大努力不出錯。
[解决办法]
我觉得关键是乱码怎么确定,比如:

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

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

热点排行