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

文件中字符串的有关问题.

2012-03-04 
文件中字符串的问题.........急!!!请教各位一个小小的问题~我想要将一个 txt 文件里重复的字符串删除,要怎

文件中字符串的问题.........急!!!
请教各位一个小小的问题~
我想要将一个 txt 文件里重复的字符串删除,要怎么执行~C++里有直接可以用的函数不?
急用啊~感激不尽

[解决办法]
首先读取 

然后
sort 排序
然后 unique

就吧重复的给删了
[解决办法]
用unique不是真的删除只是把后面不重复的放到前面覆盖
实际还在容器里面,还要用erase函数来删除
你先把内容存到容器里面,先sort->unique->erase
在然后在把容器里面的内容写入TXT文件
这样就满足你说的要求

[解决办法]
我自己用的,你看看可用吗,int不行的话就改为long
temp = "101015 20107600025 101025 20307600016 101025"
输出为path,已排序,
返回值为数据个数;


C/C++ code
int StringToArray(CString ,CArray <int,int&> &path){    //{"1-5,7,9,11,13,1,2,3,4,5,1,2,3,4,5,7-9"}    //    path.Add (12);    int i, j,t, length,index;    bool iscontinue;    char c;        length = temp.GetLength ();    iscontinue = FALSE;        for(i=0 ; i<length ;i++)    {        c = temp.GetAt (i);        if(c>= '0' && c<= '9')        {            t = 0;            while(c>= '0' && c<= '9')            {                t = 10*t + atoi(&c);                i++;                if(i<length)                {                    c = temp.GetAt (i);                    if(c>= '0' && c<= '9')                        continue;                    else                    {                        path.Add (t);                        break;                    }                }                else                {                    path.Add (t);                    break;                }            }                        if(iscontinue)            {                                int t1,t2;                index = path.GetSize () - 1;                t1 = path[index - 1] + 1;                t2 = path[index];                for(;t1 < t2 ; t1++)                {                    path.Add (t1);                }                iscontinue = FALSE;            }            if(c == '-')                iscontinue = TRUE;            else                iscontinue = FALSE;                }        else            iscontinue = FALSE;    }        index = path.GetSize ();    for(i=0 ; i<index - 1 ; i++)    {        for(j=i+1 ; j<index; j++)        {                    if(path[i] > path[j])            {                t = path[i];                path[i] = path[j];                path[j] = t;            }        }    }    for(i=0 ; i<index - 1; i++)    {        for(j = i+1; j<index; j++)        {            if(path[j] == path[i])            {                path.RemoveAt(j);                index --;                j --;            }        }    }    index = path.GetSize ();    return index;}
[解决办法]
见一个set,将还没有出现过的字符串放在数据中。然后再将set写到文件里面。
[解决办法]
自建一个字串set,文件以读/写模式打开,每读入一个字串在set里找找是否已经出现过,有则抛弃,没有则加入set并同时写入原文件(需要自己控制文件读取/写入offset)。读取完成后追加文件结束标志即可

热点排行