C++ 中 std::string(字符串类) 的最基础用法

cpp 复制代码
string a = "12345.6789";
string b = "333.33333";

这是 C++ 中 std::string(字符串类) 的最基础用法,用来直接定义一串文本 ,比 C 语言的 char 数组更方便、更安全。

我用最简单的话给你拆解:

一、 核心一句话总结

string a = "12345.6789"; 的意思就是:创建一个名叫 a 的 "文本盒子",里面装着文字 12345.6789。


二、 逐行解释

1. string a
  • 含义 :声明一个 字符串变量 ,名字叫 a。
  • 特点:它是 C++ 标准库里的类,不是基本数据类型(如 int、float)。
  • 好处 :不用关心数组长度,不用手动加结束符 \0,自动管理内存。
2. = "12345.6789"
  • 含义 :给这个字符串变量 初始化。
  • 内容 :双引号 "..." 里面的所有内容(包括数字、小数点、空格)都是字符串的有效字符。
  • 存储 :系统会自动在字符串末尾补上结束符 \0,你不用管。

三、 这两个变量里到底存了什么?

定义之后,内存里是这样的:

  • a 的内容 :'1' '2' '3' '4' '5' '.' '6' '7' '8' '9'
  • b 的内容 :'3' '3' '3' '.' '3' '3' '3' '3' '3'

四、 新手最容易混淆的 3 个区别(必看)

1. 和 char 数组的区别(最常用)
  • char arr[] = "12345.6789"; (C 语言风格)
    • 是一个字符数组,长度固定。
    • 容易溢出,操作麻烦(需要用 strcpy、strcat 等函数)。
  • string a = "12345.6789"; (C++ 风格)
    • 是一个动态对象,长度可变。
    • 可以直接用 + 号拼接,直接比较大小,非常方便。
2. 和普通变量的区别
  • int a = 10; 存的是 数值。
  • string a = "10"; 存的是 字符 (由 '1' 和 '0' 组成的一串文本)。
    • 注意:"10" 是字符串,10 是整数,两者不一样!
3. 头文件必须要有

使用 string 必须包含头文件:

cpp 复制代码
#include <string>  // 必须加这行
using namespace std; // 或者用 std::string a

五、 延伸:怎么操作这两个字符串?

既然你给出了两个字符串,这里给你展示几个常用操作:

cpp 复制代码
#include <string>
#include <iostream>
using namespace std;

int main() {
    string a = "12345.6789";
    string b = "333.33333";

    // 1. 拼接(合并)
    string c = a + b; 
    // 结果 c = "12345.6789333.33333"

    // 2. 取长度
    int len = a.size(); 
    // 结果 len = 10

    // 3. 比较大小(按字典序)
    if (a > b) {
        cout << "a 比 b 大";
    }

    return 0;
}

总结

  • string 就是 C++ 的 "文本变量"。
  • 你写的 string a = "12345.6789" 就是定义了一段带小数点的文本。
  • 它的最大好处是 支持直接加减(拼接) ,比 char 数组好用太多!
相关推荐
文丑颜不良啊15 小时前
LeetCode1461~1480题目解析
java·leetcode
2301_780789661 天前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T1 天前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设1 天前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn1 天前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川1 天前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵1 天前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人1 天前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David1 天前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1001 天前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品