删除重复字符串的有关问题~
删除重复字符串的问题~急啊!!!
继续请教各位一下~
我要将txt文件里的重复字符串删除,之前有个朋友告诉我说C++里可以用sort函数先排序,然后用unique就可以了~可我不大懂,有没有人可以帮忙再给个提示...
txt文件里的存储为如下形式:(就是一些以空格为分界的字符串)
101015 20107600025 101025 20307600016 101025
具体如何实现删除重复的~
------解决方案--------------------
------解决方案--------------------
继续请教各位一下~
我要将txt文件里的重复字符串删除,之前有个朋友告诉我说C++里可以用sort函数先排序,然后用unique就可以了~可我不大懂,有没有人可以帮忙再给个提示...
txt文件里的存储为如下形式:(就是一些以空格为分界的字符串)
101015 20107600025 101025 20307600016 101025
具体如何实现删除重复的~
------解决方案--------------------
- C/C++ code
#include <iostream>
#include <set>
using namespace std;
int main ()
{
char myints[] = "101015 20107600025 101025 20307600016 101025";
set <char> myset (myints,myints+sizeof(myints)/sizeof(char));
set <char>::iterator it;
cout < < "myset contains:";
for ( it=myset.begin() ; it != myset.end(); it++ )
cout < < " " < < *it;
cout < < endl;
return 0;
}
------解决方案--------------------
- C/C++ code
#include "stdafx.h" #include <iostream> #include <string> #include <set> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { set<string> set_string; string temp_str; char buffer[128]; bool b_flag = true; size_t icount = 0; fstream file_in("D:\\test.txt", ios_base::in); fstream file_out("D:\\result.txt", ios_base::out); if (!file_in.is_open()) { cout << "文件打开失败" << endl; return -1; } if (!file_out.is_open()) { cout << "文件打开失败" << endl; return -1; } while (!file_in.eof()) { file_in.getline(buffer, 128, ' '); temp_str = string(buffer); temp_str = temp_str.substr(0, temp_str.find(' ')); icount = set_string.size(); if (b_flag) { set_string.insert(temp_str); b_flag = false; } set_string.insert(temp_str); if (icount == set_string.size()) { continue; } file_out<<temp_str.c_str() << " "; } file_in.close(); file_out.close(); cout << " OK! " << endl; return 0; }