C++ 入门学习经验 11——字符串中:单引号和双引号别再混着用了
大家好啊!这里是土豆的博客,一个正在努力学习技术的大学生。
上一篇我们聊了字符数组和string的区别
那今天这篇我们继续聊字符串里一个特别容易写错的地方:单引号和双引号。很多同学刚开始写 C++ 时,经常分不清'a'和"a"。
好了,废话不多说,咱们直接开始。
1.字符和字符串先分清
在 C++ 里,字符通常用char保存,比如:
char c = 'a';这里的'a'表示一个字符。它可以是字母、数字字符,也可以是符号:
char c1 = 'A'; char c2 = '7'; char c3 = '#';字符串一般用string保存,比如:
string s = "hello";这里的"hello"是一串字符,里面有h、e、l、l、o。
即使字符串里只有一个字符,比如:
string s = "a";它依然是字符串。
这个地方刚开始容易绕,因为我们平时看文字时,不会刻意区分“一个字符”和“一段字符串”。但写程序时,C++ 会严格区分它们。
先记一个简单规则:
'a' // 字符 "a" // 字符串2.单引号一般配合 char
单引号一般用来表示字符。
比如:
char ch = 'x';这行代码表示:定义一个字符变量ch,里面保存字符x。
很多同学刚开始会写成:
char ch = "a";这个写法通常会报错。因为"a"是字符串,不能直接放进char变量里。
正确写法是:
char ch = 'a';我觉得可以这样理解:char像一个很小的小盒子,只能放一个字符。单引号里的内容刚好是一个字符,所以能放进去。双引号里的内容属于字符串,就算里面只有一个字母,也已经换成另一种类型了。
3.双引号一般配合 string
双引号一般用来表示字符串。
比如:
string s = "hello";如果只有一个字母,也可以写成:
string s = "a";这没有问题,因为一个字符也可以组成长度为 1 的字符串。
初学阶段可以先养成一个习惯:看到char,右边优先写单引号;看到string,右边优先写双引号。
比如:
char c = 'A'; string s = "A";输出的时候,它们看起来都可能是A,但变量类型不一样。不要只看输出结果,还要看它到底是什么类型。
4.'a'和"a"的区别
很多同学最容易卡住的地方,就是'a'和"a"。
char c = 'a'; string s = "a";第一行里,'a'是一个字符,适合放进char。
第二行里,"a"是一个字符串,适合放进string。
5.常见错误写法
这里整理几个很常见的错误,大家写代码时可以对照看一下。
第一种:
char c = "A";右边用了双引号,表示字符串。正确写法是:
char c = 'A';第二种:
char c = 'AB';char只能保存一个字符,AB已经有两个字符了。可以改成:
string s = "AB";第三种:
string s = 'hello';字符串要用双引号:
string s = "hello";第四种:
if(ch == "a") { cout << "yes"; }如果ch是char类型,就应该和字符比较:
if(ch == 'a') { cout << "yes"; }这个错误特别常见。很多同学写判断时,变量明明是char,右边却随手写成了"a"。代码看起来只差一个引号,但编译器会把它们当成不同类型。
6.字符可以参与简单运算
字符在 C++ 里还可以参与一些简单运算。
比如:
char c = 'a'; c = c + 1; cout << c;输出通常是:
b这是因为字符在计算机里有对应编号,'a'后面就是'b'。这个特点后面处理大小写转换时很常用:
char ch = 'c'; ch = ch - 'a' + 'A'; cout << ch;输出:
C如果是字符串里的字符,也可以通过下标取出来再处理:
string s = "abc"; s[0] = s[0] - 'a' + 'A'; cout << s;输出:
Abc这里的s[0]是字符,所以可以参与字符运算。
7.写代码时先看类型
我觉得字符和字符串这块,最实用的方法就是先看变量类型。
如果是:
char ch;那它一般和单引号配合:
ch = 'a';如果是:
string s;那它一般和双引号配合:
s = "abc";判断时也一样。
char ch = 'a'; if(ch == 'a') { cout << "yes"; }string s = "abc"; if(s == "abc") { cout << "yes"; }刚开始写代码时,多做这一步检查,能少很多奇怪的报错。
总结
今天这篇,我们主要聊了字符和字符串的区别,以及单引号和双引号的用法。
对于刚开始学 C++ 的同学来说,这个地方容易混很正常。因为'a'和"a"从视觉上看太像了,但程序会把它们当成不同类型来处理。
这篇先记住几个点:
char通常保存一个字符,用单引号。
string保存字符串,用双引号。
'a'是字符,"a"是字符串。判断
char变量时,一般和'a'这种字符比较。判断
string变量时,一般和"abc"这种字符串比较。
不用因为单双引号写错几次就怀疑自己。这个问题几乎每个刚开始学 C++ 的同学都会遇到,多敲几遍代码,慢慢就会顺手。
希望这篇文章能帮你把字符和字符串分清楚,也能减少一些因为引号写错导致的报错。
那这篇就先到这里。如果觉得有帮助,记得点赞、关注和收藏,谢谢!😄
有什么问题欢迎在评论区留言,我们一起交流。
我们下篇见~