文件中字符串的问题.........急!!!
请教各位一个小小的问题~
我想要将一个 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)。读取完成后追加文件结束标志即可