• c++中的string


    要弄清c++中的string如何工作,首先要弄清c++中的字符是如何工作的,字符是什么

    #include<iostream>
    
    int main()
    {
        const char *name= "Wangtn";
        //name[2]='s';
        std::cin.get();
    }

    如果没有const,下面注释掉的代码可以正常运行,但是const表示常量,所以不能进行修改。

    可以看到在内存中,字符是以ACSII形式存储在内存中的,字符串的后面以00结尾,这是字符串结束的标志。在c++中单个字符用单引号('),字符串用双引号(")。

    #include<iostream>
    
    int main()
    {
        const char *name= "Wangtn";
        char name2[6] = { 'W','a','n','g','t','n' };
        std::cout << name2 << std::endl;
        //name[2]="s";
        std::cin.get();
    }

    name2没有加上结束符0,所以打印的时候程序不知道何时终止,就会出现如下结果

     

     如果我们做如下修改

    char name2[7] = { 'W','a','n','g','t','n' ,''};

    或者直接将''换成0(没有单引号),程序正常运行。

    字符串数据类型在c++标准库中有一个类叫string,是一个模板类

    #include<iostream>
    #include<string>
    
    int main()
    {
        std::string name= "Wangtn";
        std::cout << name << std::endl;
    
        std::cin.get();
    }

    c中有strlen,strcpy等函数来处理字符串数组,这些方法以及类似的功能都在c++的string类中有定义,可以直接调用

    如果想让两个string相加,直接定义是不行的

    std::string name="Wangtn"+"sau";

    有两种修改方式

    std::string name="Wangtn";
    name+="sau";
    std::string name=std::string("Wangtn")+"sau";

    在函数中传入string,如果不使用引用或者指针,那么函数内的操作将不会影响传入值本身,参与计算的都是传入值的复制,如果使用引用就会改变传入值

     

     加上const同样发现无法修改

  • 相关阅读:
    Codeforces 631D Messenger KMP
    Google Codejam 2016 Round1A Problem C BFFs 简单图论
    ACM常用数论知识 总结
    C++ 虚函数表
    HDU 5661 Claris and XOR 贪心
    2013亚洲区域赛长沙站 ZOJ 3732 Graph Reconstruction
    [C++] upper_bound和lower_bound
    2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)
    hdu 3532 Max Angle(atan2的使用)
    poj 1106 Transmitters (计算几何,叉积||极角排序)
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12697015.html
Copyright © 2020-2023  润新知