string类

来源:互联网 发布:淘宝店招代理 编辑:程序博客网 时间:2024/06/08 11:24

    要是用string类,必须在程序中包含头文件string。string类位于名称空间std中,因此必须提供一条using编译指令或者使用std::string来引用它。string类定义隐藏了字符串的数组性质,让你能够像处理普通变量那样处理字符串。


    string对象的方式核使用字符数组在很多方面相同。

1 可以使用C风格字符串来初始化string对象。

2 可以使用cin来将键盘输入存储到string对象中。

3 可以使用cout来显示string对象。

4 可以使用数组表示法来访问存储在string对象中的字符。


主要区别:

1 可以将string对象声明为简单变量,而不是数组。

string str1;

string str2=“panther”;

2 使用string类时,某些操作比使用数组时简单。例如,不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象:

char char1[20];

char char2[20]=char1(错的)

string str1;

string str2=str1;(对的)


string类的其他操作

    在C++新增string类之前,程序员也需要完成诸如给字符串赋值等工作,对于C风格字符串,程序员使用C语言库中的函数来完成这些任务。头文件cstring提供了这些函数,例如,可以使用函数strcpy()将字符串复制到字符数组中,使用函数strcat()将字符串附加到字符数组末尾;

strcopy(char1,char2);

strcat(char1,char2);


其他形式的字符串字面值

除了char类型外,C++还有类型wchar_t;而C++11还新增了类型char16_t核char32_t。可创建这些类型的数组和这些类型的字符串字面值,对于这些类型的字符串字面值,C++分别使用前缀L、u和U表示,下面是一些例子:

    wchar_t title[]=L"chief Astrogator";

    char16_t name[]=u"Felonia “;

    char32_t car[]=U”Humber Super Snipe“;


C++11新增的另一种类型是原始(raw)字符串,在原始字符串中,字符表示的就是自己,例如,序列\n不表示换行符,而表示两个常规字符——斜杠核n,因此在屏幕上显示时,将显示这两个字符。另一个例子是,可以在字符串中使用”,而无需在程序中使用\“。当然,既然可在字符串字面量包含”,就不能再使用它来表示字符串的开头和结尾。因此,原始字符串将“(和)”用作定界符,并使用前缀R来标识原始字符串:

    cout<<R"(Jim "King" Tutt uses"\n" instead of endl.)"<<'\n';

    上述代码将显示如下内容:

    Jim "King" Tutt uses"\n" instead of endl.

    如果在原始字符串中包含)",该如何办?编译器见到第一个)”时,会不会认为字符串到此结束?会的。但原始字符串语法允许您在表示字符串开头的“和(之间添加其他字符,这意味着表示字符串结尾的”和)之间也必须包含这些字符。因此,使用R“+*(标识原始字符串的开头时,必须使用)+*”标识原始字符串的结尾,下面的语句:

cout<<R"+*("(who wouldn't?)",she whispered.)+*"<<endl;

将显示如下内容:

"(who wouldn't?)",she whispered.

    总之,这使用“+*(和)+*”替代了默认定界符“(和)".

0 0
原创粉丝点击