string类
1.注意点
//string类位于命名空间std中,使用时需要声明头文件和所属命名空间
#include <string>
using namespace std;
- 可以使用C-风格字符串来初始化sring 对象。
- 可以使用cin来将键盘输入存储到sring对象中。
- 可以使用cout 来显示 string对象。
- 可以使用数组表示法来访问存储在string对象中的字符。
-
在未输入之前,string对象的长度被自动设置为0
-
//使用以下方法获取string对象的输入 char charr[20]; int length = strlen(charr); cout << "strlen(charr):" << length << endl; getline(cin,str);//此时getline()不是istream中的类方法
-
上述代码中的charr由于定义时未初始化,第一个空字符的出现位置是随机的吗,因此在运行上述strlen(charr)时,会得到一个不确定的数值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CHT1epwS-1598406300388)(C:\Users\明明\AppData\Roaming\Typora\typora-user-images\image-20200826083346712.png)]
2.string类的赋值、拼接和附加
string str1="hello ";
string str2="world!";
string str3 = str1+str2;//str3 = "hello world!"
str1 += str2; //str1 = "hello world!"
3.其他形式的字符串字面值
除了char类型,C++还有wchar_t;并且C++11新增了char16_t和char32_t 可以创建这些类型的数组和这些类型的字符串面值。C++11分别使用前缀L、u和U表示上述三种字符
wchar_t c1[] = L"first";
char16_t c2[] = u"second";
char32_t c3[] = U"third";
除了上述之外,C++11还支持Unicode编码,使用前缀u8
表示这种类型的字符串面值
在不使用转移字符时,即保留\n
的原样输出是,常规的做法就是“\\\n”
输出\n到序列中,但原始字符串将"(和)"用作定界符,并使用前缀 R来标识原始字符串
cout << R"(i am a "big"one .)"
上述代码输出为:
i am “big” one.
就不必使用\来表示转义序列。
同时也可以使用自定义定界符控制开始和结尾R"+*(输出内容)+*"
cout << R"+*("(how are you?)",i'm fine. )+*"
上述代码输出为:
“(how are you?)”,i’m fine.
需要注意的是,在默认定界符之间可以添加任意数量额基本的字符,但是不包括(空格、左括号、右括号、斜杠和控制字符(如制表符和换行符))
,还可以结合着字符串前缀使用,如Ru、UR等
如有不对的地方,请大家多多指教~