【C/C++】String类

string类

1.注意点

//string类位于命名空间std中,使用时需要声明头文件和所属命名空间
#include <string>
using namespace std;
  • 可以使用C-风格字符串来初始化sring 对象。
  • 可以使用cin来将键盘输入存储到sring对象中。
  • 可以使用cout 来显示 string对象。
  • 可以使用数组表示法来访问存储在string对象中的字符。
  1. 在未输入之前,string对象的长度被自动设置为0

  2. //使用以下方法获取string对象的输入
    char charr[20]; 
    int length = strlen(charr);
    cout << "strlen(charr):" << length << endl;
    getline(cin,str);//此时getline()不是istream中的类方法
    
  3. 上述代码中的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等


如有不对的地方,请大家多多指教~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值