字符串的应用整理(C++)

自己一直对字符串这方面的概念比较模糊,缺少宏观的理解,对它的使用也是每次要用的时候就去查,刷题的时候也是常有字符串类的题目,所以准备整理一下这方面的知识,让自己对这方面有比较深刻的理解和印象。

C++中字符串的使用分为两种:

  1. C-style string(char数组)
  2. string类库

一、C-style string

字符串是存储在内存的连续字节中的一系列字符。所以存储在字节中的一系列字符意味着可以将字符串存储到char数组中,其中每个字符都位于自己的数组元素中。

1、简单语法

char a[5] = {'h', 'e', 'l', 'l', 'o'}; // This is not a string.
char b[6] = {'h', 'e', 'l', 'l', 'o', '\0'}; // This is a string.

C-style的字符串有一种特殊的性质:以空字符(null character)结尾,空字符被写作‘\0’,其ASCII码为0.

或者也可以按以下格式写

char a[] = "hello"; // true
char b[5] = "hello"; // false, because \0 is not understand.
char c[6] = "hello"; // true

不确定字符数时可以让计算机自己去识别。

此处注意:字符串常量用双引号,字符常量用单引号

2、使用标准C语言库函数

需要声明

#include <cstring>
strlen(str) // str字符串的长度
strcat(str1, str2) // 连接str1和str2
strcpy(str1, str2) // 复制str2到str1
strcmp(str1, str2) // 逐字符比较str1和str2

这里列出的就一点点,如果需要参考这个博客https://blog.csdn.net/u010177286/article/details/50333531

3、字符串的输入

cin输入

cin >> name;

Q:cin如何确定已完成字符串输入呢?

A:由于不能通过键盘输入空字符,因此cin需要用别的方法来确定字符串的结尾位置。cin使用空白(空格、制表符和换行符)来确定字符串的结束位置,这意味着cin在获取字符串数组输入时只能读取一个单词。读取该字符串后,cin将该字符串放到数组中,并在结尾添加空字符。

每次读取一行字符串输入

(1) getline()

getline()函数读取整行,通过回车键输入的换行符来确定输入结尾。

cin.getline(name, 20) //可以规定输入字符,如20即规定输入为19,也可以不规定。

(2) get()

该方法有多种变体,第一种与getline类似。

不能连续两次调用,因为第二次调用时接收的第一个字符就是换行,所以无法存储。

解决方式

// method 1
cin.get(name1, size);
cin.get();
cin.get(name2, size);

// method 2
cin.get(name1, size).get()

//or
cin.getline(name1, size).getine(name2, size)

二、String类

#include <string>

1、初始化及使用

string str1; // create an empty string object
string str2 = "panther"; // create and initialize

string str3 = {"hello"}; // It's ok.

str1 = str 2; // ok, copy(strcpy)
// 不能将一个数组赋值给另一个数组,但可以将一个string对象赋值给另一个string对象。
str3 = str1 + str2; //ok

str1 += "hhh"; // add (like strcat)

len = str1.size(); // like strlen(name) in C-style

2、输入

cin >> str;
getline(cin, str);

还有很多,参考C++ primer p76(标准库类型string),节约时间,直接截图:

需了解更多见C++ primer.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值