#include <iostream> #include <algorithm> #include <string.h> #include <sstream> #include <numeric> // std::accumulate #include <vector> #include <iterator> #include <list> #include <fstream> using namespace std; int main(int argc,char* argv[]) { //transform string s("heLLo"); transform(s.begin(), s.end(), s.begin(), ::toupper); cout << s << endl; transform(s.begin(), s.end(), s.begin(), ::tolower); cout << s << endl; //count 统计单个字符出现的次数 char s1[]="hello stl android stl fuck stl to baidu"; int n=count(s1,s1+strlen(s1),'l'); cout<<n<<endl; //erase string s2(" hello "); s2.erase(0, s2.find_first_not_of(" \n")); cout << s2 << endl; s2.erase(s2.find_last_not_of(' ') + 1); cout << s2 << endl; //trim string s3(" hello, world. say bye "); s3.erase(remove_if(s3.begin(),s3.end(), bind2nd(equal_to<char>(), ' ')), s3.end()); cout << s3 << endl; //replace 一次 string s4("hello, world,hello,android"); string sub("ello"); s4.replace(s4.find(sub), sub.size(), "appy "); cout << s4 << endl; //startwith endwith string s5("hello, world"); string head("hello"); string tail("ld"); bool startwith = s5.compare(0, head.size(), head) == 0; cout << boolalpha << startwith << endl; bool endwith = s5.compare(s5.size() - tail.size(), tail.size(), tail) == 0; cout << boolalpha << endwith << endl; string s6("123"); int i = atoi(s6.c_str()); cout << i << endl; int ii; stringstream(s6) >> ii; cout << ii << endl; string sd("12.3"); double d = atof(sd.c_str()); cout << d << endl; double dd; stringstream(sd) >> dd; cout << dd << endl; string sb("true"); bool b; stringstream(sb) >> boolalpha >> b; cout << boolalpha << b << endl; //split /*string s7("hello world, bye."); vector<string> vect; vect.assign( istream_iterator<string>(stringstream(s7)),istream_iterator<string>(" ") );*/ //concat strcat vector<string> vect; vect.push_back("hello"); vect.push_back(", "); vect.push_back("world"); string result= accumulate(vect.begin(), vect.end(), string("")); cout <<result<<endl; std::reverse(result.begin(), result.end()); cout <<result<<endl; //逆转赋值 string s8; s8.assign(result.rbegin(), result.rend()); cout <<s8<<endl; //filename std::string filename("hello.exe"); std::string::size_type pos = filename.rfind('.'); std::string ext = filename.substr(pos == std::string::npos ? filename.length() : pos + 1); cout <<ext<<endl; int dist; list<int> col; col.push_back(150); col.push_back(14); col.push_back(145); col.push_back(11); col.push_back(15); col.push_back(123); col.push_back(187); col.push_back(17); col.push_back(4); std::list<int>::iterator it_pos = find(col.begin(), col.end(), 5); if ( it_pos != col.end()) dist = std::distance(col.begin(), it_pos); cout <<dist<<endl; cout<<*max_element(col.begin(), col.end())<<endl; cout<<*min_element(col.begin(), col.end())<<endl; /*从文件中读取一行 string input; input.reserve(1000); ifstream ifs("/tmp/tmp.txt"); getline(ifs, input); cout<<input<<endl;*/ //读取整个文件 ifstream ifs("/tmp/tmp.txt"); /* string input2( istreambuf_iterator<char>(ifs.rdbuf()), istreambuf_iterator<char>() ); cout<<input2<<endl;*/ string input; input.reserve(10000); input.assign( istreambuf_iterator<char>(ifs.rdbuf()), istreambuf_iterator<char>() ); cout<<input<<endl; //copy ifstream ifs2("in.txt"); ofstream ofs2("out.txt"); ofs2 << ifs2.rdbuf(); cin>>s; return 0; } template<typename InputIterator, typename OutputIterator, typename Predicate> OutputIterator copy_if( InputIterator begin, InputIterator end, OutputIterator destBegin, Predicate p) { while (begin != end) { if (p(*begin))*destBegin++ = *begin; ++begin; } return destBegin; }http://www.cplusplus.com/reference/algorithm/
http://blog.csdn.net/woaifen3344/article/details/8050327