C/C++常用的字串操作
1、字串轉整形
int atoi(const char *str );
注意:輸入是 C風格的字元陣列,如果 是C++ string型別,輸入可以呼叫 str.c_str()輸入C風格字串;
如果輸入中不全為數字型別字元,則轉換會在第一個不是數字型別的字元處停止。
例如:
string str = "181.484";
int x = atoi(str.c_str());
上述例子中,x等於181;
2、取子字串
string str = "giregjniuer"; string sub1 = str.substr(1); //取str的1號下標到最後位置為子串 string sub1 = str.substr(0,5); //取str的0號下標開始後的5個字元為子串
3、從字串中查詢字串
(1)size_t find (const string& str, size_t pos = 0) const; //查詢物件--string類物件
(2)size_t find (const char* s, size_t pos = 0) const; //查詢物件--字串
(3)size_t find (const char* s, size_t pos, size_t n) const; //查詢物件--字串的前n個字元
(4)size_t find (char c, size_t pos = 0) const; //查詢物件--字元
結果:找到 -- 返回 第一個字元的索引
沒找到--返回 string::npos
string str = "qau ni ma b";
int id1 = str.find("ni");
int id2 = str.find("a",id1); // 從id1位置往後找,找到的下標是相對於整個字串而不是id1開始
int id3 = str.find("ni m",0,2); //第三個引數,表示要查詢的字串(第一個引數)的前幾個字元
4、切割字串
切割字串可以通過find和substr來實現,也可以通過下面函式實現。
char* strtok (char* str,constchar* delimiters );
函式功能: 切割字串,將str切分成一個個子串 函式引數: str:在第一次被呼叫的時間str是傳入需要被切割字串的首地址;在後面呼叫的時間傳入NULL。 delimiters:表示切割字串(字串中每個字元都會 當作分割符)。 函式返回值: 當s中的字元查詢到末尾時,返回NULL; 如果查不到delimiter所標示的字元,則返回當前strtok的字串的指標。
char buf[]="[email protected]@[email protected]@heima";
char*temp = strtok(buf,"@");
while(temp)
{
printf("%s ",temp);
temp = strtok(NULL,"@");
}
5、替換字串
替換(replace)
語法:
basic_string &replace( size_type index, size_type num, const basic_string &str ); basic_string &replace( size_type index1, size_type num1, const basic_string &str, size_type index2, size_type num2 ); basic_string &replace( size_type index, size_type num, const char *str ); basic_string &replace( size_type index, size_type num1, const char *str, size_type num2 ); basic_string &replace( size_type index, size_type num1, size_type num2, char ch ); basic_string &replace( iterator start, iterator end, const basic_string &str ); basic_string &replace( iterator start, iterator end, const char *str ); basic_string &replace( iterator start, iterator end, const char *str, size_type num ); basic_string &replace( iterator start, iterator end, size_type num, char ch ); |
replace()函式:
- 用str中的num個字元替換本字串中的字元,從index開始
- 用str中的num2個字元(從index2開始)替換本字串中的字元,從index1開始,最多num1個字元
- 用str中的num個字元(從index開始)替換本字串中的字元
- 用str中的num2個字元(從index2開始)替換本字串中的字元,從index1開始,num1個字元
- 用num2個ch字元替換本字串中的字元,從index開始
- 用str中的字元替換本字串中的字元,迭代器start和end指示範圍
- 用str中的num個字元替換本字串中的內容,迭代器start和end指示範圍,
- 用num個ch字元替換本字串中的內容,迭代器start和end指示範圍.
例如,以下程式碼顯示字串"They say he carved it himself...find your soul-mate, Homer."
string s = "They say he carved it himself...from a BIGGER spoon"; string s2 = "find your soul-mate, Homer."; s.replace( 32, s2.length(), s2 );