• C++中几种字符串表示方法


      最近学习C++时,被几种字符串搞的有点乱,这里记录一下。

      c++中有两种风格字符串,分别是:

    • C++风格字符串
    • C风格字符串

      它们各自的声明方式如下:

    void main(){
        string a = "hello";    //C++风格
        char *b = "hello";  //C风格
        char c[] = "hello";  //C风格
    }

    C++风格字符串

      string是c++标准库定义的类型。string支持下标操作,可以修改string中的一部分。同时string可以看作存储char的vector容器的特化,所以string支持一般的容器操作。

    string a="hello“;
    a[3] = 's'; //支持下标操作
    
    //通过迭代器输出首尾元素
    cout<<*a.begin();
    auto e = a.end();
    cout <<*(--e);

    C风格字符串

      C风格字符串不是一种类型,而是一种约定俗成的写法。即字符串放在字符数组中并以空字符结束(’‘)。

    char ca1[]={'C', '+', '+'}; //没有以’'结尾,非c风格字符串
    char ca2[]={'C', '+', '+', ''}; // 显式添加''
    char ca3[]="C++"; // 编译器会自动在末尾添加空字符
    char *cp="C++"; // 编译器会自动在末尾添加空字符

      其中,使用字符数组时,只能在定义的时候初始化,同时,对于字符指针型的字符串(char *str),字符数组可以直接赋值给字符指针型字符串,但反之就不行。

    char[10] str_1 = "hello"; //正确
    char[10] str_2;
    char* str_3 = "world"; str_2
    = "hello" //错误,此时的str_2是一个数组名,不能这样赋值 str_2[0] = 'h'; //正确
    str_3 = str_1;      //正确
    str_1 = str_3;      //错误

      

    两种风格字符串间的转换

      在编程程序的时候,尽量使用string,但有很多时候修改老代码的时候不得已会用到C风格字符串,所以需要用到两种风格间字符串的转换。

      1.C风格字符串转换为C++风格字符串

      string类能够自动将C风格字符串转化为C++风格字符串,也就是说C风格字符串能够直接赋值给string。

    string str_1;
    char * str_2 = "hello";
    char[] str_3 = "world“;
    
    str_1 = str_2;     //正确
    str_1 = str_3;     //正确

      2.C++风格字符串转换为C风格字符串

      这种转换需要用到函数c_str,这个函数返回的是一个const *char类型的值。

    string str_1 = "hello";
    char *str_2 = str_1.c_str();    //错误,c_str()返回的是const char*
    const char* str_3 = str_1.c_str() ;   //正确
  • 相关阅读:
    20、插入横向文本框,输入文字后,文字周围有留白
    46、文字工具
    19、表格—单元格输入文字后,四周留白边
    50、路径选择工具
    48、钢笔工具【P】—形状
    49、路径和形状
    leetcode 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最近公共祖先(简单)
    leetcode 226. Invert Binary Tree 翻转二叉树(简单)
    leetcode 208. Implement Trie (Prefix Tree) 实现 Trie (前缀树) (中等)
    leetcode 144. Binary Tree Preorder Traversal 二叉树展开为链表(中等)
  • 原文地址:https://www.cnblogs.com/honernan/p/11942940.html
Copyright © 2020-2023  润新知