1. string字符串拼接
a. 拼接char指針(C - String)類型的字符串, 可以指定長度
如果沒有指定長度,拼接C - String的起始位置到'\0'的位置
char a[] = { 'a', 'b', 'c', 'd', '\0'}; const char *b = "wangjing"; s.append(a); s.append(b); s.append(a, 3);
b. 拼接string類型的字符串
string c = "helloworld"; s.append(c);
c. 拼接字符類型:第一個參數用於指定拼接該字符的個數
char ch = 'm'; s.append(2, ch);
2. 整數類型和字符串類型之間的轉換
a. 整數類型轉字符串類型
方法一:使用_itoa_s(int integer, const char* target, int scale)
第一個參數:需要轉換成整形的數;第二個參數:轉換后存儲的地址;第三個參數:采用的進制
會自動在char* 后面加上'\0',所以可以直接輸出結果
int main() { char numtochar[20]; _itoa_s(234, numtochar, 10); cout << numtochar; }
方法二:采用sprintf_s(const char* target, '%d', int integer)字符串格式化函數
第一個參數,存儲的目的地址,第二個參數:轉換為整形,第三個參數:需要轉換成整形的數
int main() { char numtochar[20]; sprintf_s(numtochar, "%d", 234); cout << numtochar; }
b. 字符串類型轉整數
atio(const char* charnumber)
int main() { char numtochar[20] = { '1', '3', '5', '7'}; cout << atoi(numtochar); }
3. const char *,string,char[]類型之間的轉換
注:對於string中第k個字符,可以使用string[k]和string.at[k]來訪問
a. string 轉 const char*
方法一:使用data()函數
int main() { string m = "2342"; const char* p = m.data(); int k = 0; while (p[k] != NULL) { cout << p[k] << ","; k++; } }
方法二:使用c_str()函數
int main() { string m = "2342"; const char* p = m.c_str(); int k = 0; while (p[k] != NULL) { cout << p[k] << ","; k++; } // 直接使用cout << p更加簡單方便 }
b. string轉char[](string 轉char *,不需要指定const char類型)
調用string的copy函數:第一個參數為數組對象,第二個參數為長度,第三個參數為起始位置。
int main() { string m = "2342"; char p[50] = { 0 }; m.copy(p, 4, 0); int k = 0; while (p[k] != NULL) { cout << p[k] << ","; k++; } // 直接使用cout << p更加簡單方便 }
初始化一個數組時,char類型,默認為'\0',但是需要至少指定第一個,否則認為沒有初始化。int類型默認為0
增強版:采用動態內存分配可以減小程序需要的內存空間
int main() { string m = "2342"; int len = m.length() + 1; char *p = new char[len]; m.copy(p, 4, 0); p[len - 1] = '\0'; cout << p; delete[] p; // 直接使用cout << p更加簡單方便 }
c char[]和char *轉string
直接賦值即可。
int main() { const char *p = "wang"; const char q[] = "helloworld"; string a = p; string b = q; cout << a; cout << b; }