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


    1. string字符串拼接

    a. 拼接char指针(C - String)类型的字符串, 可以指定长度

    如果没有指定长度,拼接C - String的起始位置到''的位置

    char a[] = { 'a', 'b', 'c', 'd', ''};
    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* 后面加上'',所以可以直接输出结果

    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类型,默认为'',但是需要至少指定第一个,否则认为没有初始化。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] = '';
        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;
    }
  • 相关阅读:
    postgresql 高可用 etcd + patroni 之四 failover
    mysql 高可用架构 mha 之三 master_ip_online_change
    postgresql 一种比较个性的 sql 写法
    mysql 高可用架构 mha 之二 master_ip_failover
    mysql 高可用架构 mha 之一 安装
    vacuum 不释放文件系统空间
    mysql slave 复制冲突的解决
    mysql 8.0 登录报错
    oceanbase的一些网址信息
    cockroachdb的一些网址信息
  • 原文地址:https://www.cnblogs.com/feng-ying/p/11169215.html
Copyright © 2020-2023  润新知