C++学习之符合类型(2)

1.string类 string str1 = "panther"; string 对象的方式与使用字符数组相同。

  • 可以使用C-风格字符串来初始化string对象。
  • 可以使用cin来将键盘输入存储到string对象中。
  • 可以使用cout来显示string对象。
  • 可以使用数字表示法来访问存储在string对象中的字符。

string对象和字符数组之间的主要区别是,可以将string对象声明为简单变量,而不是数组。

类设计让设计程序能够自动处理string的大小。

C++也允许将列表初始化用于C-风格字符串和string类  -----------string str1 = {"ssssssss"};

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

string类简化字符串合并操作。可以使用运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象的末尾。

string str3;

str3=str1+str2;//assign str3 the joined strings

str1+=str2;//add str0 to the end of str1

3.string 类的其他操作

头文件cstring(以前为string.h)提供了这些函数。例如,可以使用函数strcpy()将字符串复制到字符数组,使用函数strcat()将字符串附加到字符数组末尾

strcpy(charr1,charr2);//copy charr2 to charr1

strcat(charr1,charr2);//append contents of charr2 to charr1

下面有两种方法确定字符串中字符数的方法:

int len1 = str1.size();//obtain length of str1(string 类)

int len2 = strlen(charr1);//obtain length of charr1(数组)

函数strlen()是一个常规函数,它接受一个C-风格字符串作为参数,并返回该字符串包含的字符数。函数size()的功能基本上于此相同,但语句不同,这种语法不是被用作函数参数,而是位于函数名之前,它们之间用句号链接。str1是一个对象,而size()是string类的一个方法。方法是一个函数,只能通过所属类的对象进行调用。

4.下面将一行输入读取到数组中的代码与将一行输入读取到string对象中的代码对比

cin.getline(charr,20);

这种句点表示法表明,函数getline()是istream类的一个类方法。

getlin(cin,str);

这里没有使用句号表示法,这表明这个getline()不是类方法。它将cin作为参数,指出到哪里去查找输入。另外也没有指出字符串的长度,因为string对象将根据字符串的长度自动调整自己的大小。

5.其他形式的字符串字面值

  • wchart_t title[] = L"sdasdasdasd";
  • char16_t name[] = u"sdasdasdasfg";
  • char32_t car[]  = U"asdacasasd";
  • C++11还支持Unicode字符编码方案UTF-8.在这种方案中,根据编码的数字值,字符可以存储为1-4个八位组。C++还使用前缀u8来表示这种类型的字符串字符类型。
  • C++11新增的另一种类型是原始(raw)字符串。在原始字符串中,字符表示的就是自己。例如,序列\n不表示换行符,而表示两个常规字符——斜杠和n,因此在屏幕上显示时,将显示这两个字符。另一个例子是,可在字符串中使用“,而无需像以前的程序使用\"。当然,既然可以在字符串字面量包含“,就不能在使用它来表示字符串的开头和末尾。因此,原始字符串将“(和)“用作定界符,并使用前缀R来标识原始字符串:

cout<<R"(JIm "s" sada "\n"L)"<<'\n';

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

JIM “s”sada “\n”L

输入原始字符串,按回车键不仅会移动到下一行,还将在原始字符串中添加回车字符。

原始字符串语法允许你在表示字符串开头的“和(之间添加其他字符,这意味着表示字符串结尾的“和)之间也必须包含这些字符。

 

 

猜你喜欢

转载自blog.csdn.net/qq_38721302/article/details/82844844