c++字符串拼接, 整数和字符串的转换,string, const char*, char[]类型之间的转换

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;
}