当前位置: 首页 > news >正文

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"是一串字符,里面有hello

即使字符串里只有一个字符,比如:

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"; }

如果chchar类型,就应该和字符比较:

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"从视觉上看太像了,但程序会把它们当成不同类型来处理。

这篇先记住几个点:

  1. char通常保存一个字符,用单引号。

  2. string保存字符串,用双引号。

  3. 'a'是字符,"a"是字符串。

  4. 判断char变量时,一般和'a'这种字符比较。

  5. 判断string变量时,一般和"abc"这种字符串比较。

不用因为单双引号写错几次就怀疑自己。这个问题几乎每个刚开始学 C++ 的同学都会遇到,多敲几遍代码,慢慢就会顺手。

希望这篇文章能帮你把字符和字符串分清楚,也能减少一些因为引号写错导致的报错。

那这篇就先到这里。如果觉得有帮助,记得点赞、关注和收藏,谢谢!😄

有什么问题欢迎在评论区留言,我们一起交流。

我们下篇见~

http://www.jsqmd.com/news/1190226/

相关文章:

  • 亨得利官方名表服务中心|官方地址及售后服务热线权威信息通知(2026年7月最新) - 亨得利官方博客
  • nRF Sniffer 在Wireshark中的高效过滤与实战技巧
  • 2026 年浦江靠谱的除铁器品牌哪家专业,别把粮食当白菜,这种看不见的黑心杂质竟能要命? - 鉴选官
  • 亨得利官方钟表服务中心|官方地址与维修热线权威信息声明(2026年7月更新) - 亨得利官方
  • 工业级遗传算法实操指南:动态架构与参数物理意义
  • 工业负载控制:TPD2015FN与STM32L073RZ的智能驱动方案
  • STM32驱动压电蜂鸣器:工业警报系统设计与优化
  • ChatGPT在线答疑辅助突然失效?紧急排查清单(含OpenAI状态码映射表本地Fallback应急协议)
  • 2026年海安空调维修排名及本地靠谱服务商选择指南 - 热点品牌推荐
  • ROS消息序列化原理与工程实践:从.msg到字节流的全链路解析
  • RooFit教程:C++概率模型拟合与高能物理数据分析实战
  • Java接入大模型的4个坑和生产级框架实践
  • 国内主流地坪厂家实测排行:多场景需求适配对比 - 互联网科技品牌测评
  • 2026年餐饮行业SEO/GEO优化公司哪家好?服务商避坑指南与选型评测 - GEO优化
  • 高性能LDO并联设计全解析:从电流均分到热管理实战
  • TDA7468与STM32F415RG构建高性能音频处理系统
  • 2026年7月亲身到店体验佛山亨得利官方名表服务中心|地址及官方客服服务电话 - 亨得利官方
  • 运放实战精要(一):供电方案抉择、去耦布局与PCB设计要点
  • 为什么你的ChatGPT分类总出错?揭秘训练数据噪声、标签漂移与领域适配失效三大致命盲区
  • 公众号选题生成:基于HarmonyOS + ArkTS的AI智能内容规划助手开发实践
  • 三井Outlet购物实战:CK牛仔裤上身检验与选品框架
  • 从零构建碧蓝航线立绘自动化提取与合成工具
  • 2026 年新发布:黎城有实力的20号精密钢管制造厂怎么联系,买错管径多花几万?揭秘20号精密钢管选型雷区 - 行业推荐官【认证】
  • 数字电路时序控制:基于74LS193的八路流水灯Multisim仿真与优化
  • # 2026年运城刑事律师推荐指南:从取保候审到法庭辩护全解析 - 本地品牌推荐
  • Oracle性能优化:如何使用SQL Trace和TKPROF工具进行SQL性能分析?
  • 西安健身软硬件一体化方案系统开发,门锁器械协议适配开发
  • Java开发者做AI的3个死结和框架破局
  • 基于NLP的英语读后续写智能批改系统设计与实践
  • 单词记忆卡片生成:基于HarmonyOS + ArkTS的AI智能学习助手开发实践