【題目】
給定乙個字串str,返回str的統計字串。
【舉例】
"aaabbadddffc"的統計字串為"a_3_b_2_a_1_d_3_f_2_c_1"。
【實現】
#include #include using namespace std;
int _tmain(int argc, _tchar* argv)
string res="";
res += str[0];
int count = 1;
for (int i = 1; i < str.size(); i++)
else
}res = res + "_" + to_string(count);
cout << res;
return 0;
}
【知識點】
1、c++中常用的字串操作函式(以char *作為操作物件):
①函式名: strcpy
功 能: 拷貝乙個字串到另乙個
用 法: char *strcpy(char *destin, char *source);
②函式名: strcat
功 能: 字串拼接函式
用 法: char *strcat(char *destin, char *source);
③函式名: strchr
功 能: 在乙個串中查詢給定字元的第乙個匹配之處
用 法: char *strchr(char *str, char c);
④函式名: strcmp
功 能: 串比較
用 法: int strcmp(char *str1, char *str2);
看asic碼,str1>str2,返回值 > 0;兩串相等,返回0
⑤函式名: strcspn
功 能: 在串中查詢第乙個給定字符集內容的段
用 法: int strcspn(char *str1, char *str2);
⑥函式名: strdup
功 能: 將串拷貝到新建的位置處
用 法: char *strdup(char *str);
⑦函式名: stricmp
功 能: 以大小寫不敏感方式比較兩個串
用 法: int stricmp(char *str1, char *str2);
⑧函式名: strrev
功 能: 串倒轉
用 法: char *strrev(char *str);
⑨函式名: strset
功 能: 將乙個串中的所有字元都設為指定字元
用 法: char *strset(char *str, char c);
⑨函式名:strtok
功能: strtok()將字串分割成乙個個片段。
用法:char *strtok(char *s,const char *delim);
簡介:s指向要分割的字串,delim為分割字串,當strtok()在引數s的字串中發現到引數delim的分割字元時則會將該字元改為/0字元。在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null。每次呼叫成功則返回下乙個分割後的字串指標。返回值返回下乙個分割後的字串指標,如果已無從分割則返回null。
#include #include #includeusing namespace std;
#pragma warning( disable : 4996)
int main()
for (int i = 0; i
2、c++中常用的字串操作函式(以string作為操作物件):
①比較函式:
c ++字串支援常見的比較操作符(>,>=,<,<=,==,!=),在使用》,>=,<,<=這些操作符的時候是根據「當前字元特性」將字元按字典順序進行逐一得比較。字典排序靠前的字元小,比較的順序是從前向後比較,遇到不相等的字元就按這個位置上的兩個字元的比較結果確定兩個字串的大小。同時,string (「aaaa」)
例如:string s(「abcd」);
s.compare(「abcd」); //返回0
s.compare(「dcba」); //返回乙個小於0的值
s.compare(「ab」); //返回大於0的值
②更改內容:
a)可以使用操作符=直接進行賦值;
b)可以使用成員函式assign(),這個成員函式可以使你更靈活的對字串賦值。
例如:s.assign(str); //直接賦值
s.assign(str,1,3);//如果str是」iamangel」 就是把」ama」賦給字串
s.assign(str,2,string::npos);//把字串str從索引值2開始到結尾賦給s
s.assign(「gaint」); //直接賦值
s.assign(「nico」,5);//把』n』 『i』 『c』 『o』 『\0』賦給字串
s.assign(5,』x』);//把五個x賦給字串
c)把字串清空的方法有三個:s=」」;s.clear();s.erase();s.erase(13);//從索引13開始往後全刪除
s.erase(7,5);//從索引7開始往後刪5個
d)增加字元:
2)在字串的某個位置插入:這時候可以用insert()函式,這個函式需要指定乙個安插位置的索引,被插入 的字串將放在這個索引的後面。s.insert(0,」my name」); s.insert(1,str);
e)替換字串:string s=」il8n」;
s.replace(1,2,」nternationalizatio」);//從索引1開始的2個替換成後面的c_string
#include#includeusing namespace std;
//第一種替換字串的方法用replace()
void string_replace(string&s1,const string&s2,const string&s3)
}//第二種替換字串的方法用erase()和insert()
void string_replace_2(string&s1,const string&s2,const string&s3)
}
f)提取子串:s.substr();//返回s的全部內容
s.substr(11);//從索引11往後的子串
s.substr(5,6);//從索引5開始6個字元
③字串逆轉(
使用algorithm中的reverse函式):
#include #include #include using namespace std;
int main()
5 6字串的統計字串
題目 給定乙個字串str,返回str的統計字串。補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上的第index個字元。實現public class getcountstring string res string.valueof str.charat...
字串的統計字串
給定乙個字串,統計每乙個字母的出現次數 比如aabbccc,列印出來就是a 2 b 2 c 3 思路還是採取遍歷,注意這幾個題的思路都比較類似 要注意這裡的sstream 這裡的clear 並非清空了緩衝區,而只是重置標誌,如果要重置緩衝區,則應為ss.str include include usi...
字串的統計字串
題目 給定乙個字串str,返回str的統計字串。例如,aaabbadddffc 的統計字串為 a 3 b 2 1 d 3 f 2 c 1 補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上第index個字元。例如,a 1 b 100 所代表的原始字串上...