zoukankan      html  css  js  c++  java
  • C++string的操作

      1 #include <iostream>
      2 using namespace std;
      3 
      4 
      5 int main()
      6 {
      7     //initilization
      8     string            str("abc.ddd");
      9     const    string     cstr("fff.ccc");
     10     string substr1(str, 2); //c.ddd
     11     string substr2(str, 2, 3); //c.d
     12     string substr3("abcdefg", 2); //ab
     13     cout << "the value of substr1 is: " << substr1 << endl;
     14     cout << "the value of substr2 is: " << substr2 << endl;
     15     cout << "the value of substr3 is: " << substr3 << endl;
     16 
     17     //compare
     18     if(str > cstr)
     19         cout << "abc.ddd is larger than fff.ccc." << endl;
     20     else
     21         cout << "abc.ddd is less than fff.ccc." << endl;
     22     if(str.compare(cstr) > 0)
     23         cout << "abc.ddd is larger than fff.ccc." << endl;
     24     else
     25         cout << "abc.ddd is less than fff.ccc." << endl;
     26 
     27     //assign
     28     str = "sadfasdf";
     29     str.assign("a",5); //a,,,,
     30     str.assign(5,'a'); //a, a, a, a, a
     31     cout << "the value of str is: " << str << endl; //aaaaa
     32 
     33     //append
     34     str.append("bcd");
     35     cout << "the value of s after append is: " << str << endl; //aaaaabcd
     36     
     37     //insert
     38     //s.insert(1, 'd'); NOK!
     39     str.insert(1, "ddd"); //adddaaaabcd
     40     cout << "the value of s after append is: " << str << endl;
     41     
     42     //find
     43     string::size_type idx = str.find(".");
     44     cout << "the index of . is: " << idx << endl; //3
     45 
     46     //substring
     47     string basestr = str.substr(0, idx); //abc
     48     string extestr = str.substr(idx + 1, string::npos); //ddd
     49     cout << "the substr of str.substr(0, idx) is: " << basestr << endl;
     50     cout << "the substr of str.substr(idx, string::npos) is: " << extestr << endl;
     51 
     52     //compare
     53     if(extestr == "ddd")
     54         cout << "ddd file is found!" << endl;
     55     else
     56         cout << "ddd file is not found!" << endl;
     57     
     58     //replace
     59     string tmpname(str.replace(idx + 1, string::npos, "xxx")); //abc.xxx
     60     cout << "the string after replace extention is: " << tmpname << endl;
     61 
     62     //erase
     63     str = "internal";
     64     str.replace(0,2,"ex"); //external
     65     str.erase(5);
     66     str.erase(2,2);
     67     cout << "the string after erase is: " << str << endl;
     68 
     69     //clear
     70     str.clear();
     71     cout << "the string after clear is: " << str << endl;
     72     if(str.empty())
     73         cout << "the string is empty." << endl;
     74     else
     75         cout << "the string is not empty." << endl;
     76     if(str.begin() == str.end())
     77         cout << "equal." << endl;
     78     else
     79         cout << "unequal" << endl;
     80 
     81     //reverse
     82     str = "abcd";
     83     reverse(str.begin(), str.end());
     84     cout << "the string after reverse is: " << str << endl;
     85     str.assign(str.rbegin(), str.rend());
     86     cout << "the string after reverse is: " << str << endl;
     87 
     88     //data
     89     const char* pa = str.data();
     90 
     91     //size(), length()
     92     cout << "the size of str is: " << str.size() << endl;
     93     cout << "the size of str is: " << str.length() << endl;
     94 
     95     //[], at()
     96     char& r = str[2];
     97     char* p = &str[3];
     98     cout << "the 3rd char of str is: " << r << endl;
     99     cout << "the 4rd char of str is: " << *p << endl;
    100     str = "new value";
    101     //reference is invalid after str is re-assigned
    102     r = 'X';
    103     cout << "The value of str is: " << str << endl;
    104 
    105     //advanced find    
    106     //Input: I was a deer
    107     //Output: reed a saw I
    108     const string delims(" 	,.;");
    109     string line;
    110     cout << "Please input a sentence: " << endl;
    111     getline(cin, line,'
    ');
    112     cout << "The input sentence is: " << line << endl;
    113     //while find a word
    114     string::size_type begIdx, endIdx;
    115     begIdx = line.find_first_not_of(delims);
    116     while(begIdx != string::npos){
    117         endIdx = line.find_first_of(delims, begIdx); 
    118         if(endIdx == string::npos);
    119             //endIdx = line.length();
    120         for(int i = endIdx - 1; i >= static_cast<int>(begIdx); --i)
    121             cout << line[i];
    122         cout << ' '; 
    123         begIdx = line.find_first_not_of(delims, endIdx);
    124 
    125     }
    126     cout << endl;
    127 
    128 }
  • 相关阅读:
    洛谷-P5729 【深基5.例7】工艺品制作
    洛谷-P5728 【深基5.例5】旗鼓相当的对手
    洛谷-P5727 【深基5.例3】冰雹猜想
    洛谷-P1720 月落乌啼算钱
    洛谷-P4956 [COCI2017-2018#6] Davor
    洛谷-P1075 质因数分解
    洛谷-P1420 最长连号
    洛谷-P1307 数字反转
    回调地址
    OAuth 2.0
  • 原文地址:https://www.cnblogs.com/dracohan/p/3768460.html
Copyright © 2011-2022 走看看