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

C++系列十五:字符串

字符串

    • 1 、创建和初始化C++字符串
    • 2. C++字符串的常用操作
    • 3. C++字符串处理函数
    • 4. C++字符串在实际开发中的应用

C++中的字符串是由字符组成的序列。字符串常用于处理文本数据,例如用户输入、文件内容等。C++标准库提供了一个名为std::string的类,用于表示和处理字符串。

1 、创建和初始化C++字符串

在C++中,可以使用多种方式创建和初始化字符串。以下是一些常用的方法:

(1)直接赋值

std::string str = "Hello, World!";

(2)使用构造函数

std::string str("Hello, World!");

(3) 使用字符数组

char arr[] = "Hello, World!";
std::string str(arr);

(4) 使用字符指针

const char* ptr = "Hello, World!";
std::string str(ptr);

2. C++字符串的常用操作

(1)获取字符串长度

使用size()函数可以获取字符串的长度。

std::string str = "Hello, World!";
int length = str.size(); // 长度为13

(2) 连接字符串

使用+运算符或append()函数可以连接两个字符串。

std::string str1 = "Hello";
std::string str2 = "World!";
std::string str3 = str1 + str2; // 结果为"HelloWorld!"
str3.append(str2); // 结果仍为"HelloWorld!"

(3) 访问字符串中的字符

使用索引运算符[]at()函数可以访问字符串中的字符。注意,索引从0开始。

std::string str = "Hello, World!";
char firstChar = str[0]; // 结果为'H'
char secondChar = str.at(1); // 结果为'e',at()函数也可以用于访问字符串中的字符

(4) 字符串比较

使用==!=<>等运算符进行字符串比较。

std::string str1 = "Hello";
std::string str2 = "World";
if (str1 == str2) {std::cout << "str1 and str2 are equal";
} else {std::cout << "str1 and str2 are not equal";
}

3. C++字符串处理函数

(1)字符串切片:substr()函数

std::string str = "Hello, World!";
std::string subStr = str.substr(0, 5); // 结果为"Hello"

(2)字符串替换:replace()函数

std::string str = "Hello, World!";
str.replace(0, 5, "Hi"); // 结果为"Hi, World!"

(3)字符串分割:find()substr()函数

std::string str = "Hello, World!";
size_t pos = str.find(",");
std::string part1 = str.substr(0, pos); // 结果为"Hello"
std::string part2 = str.substr(pos + 1); // 结果为" World!"

4. C++字符串在实际开发中的应用

字符串在C++中广泛应用于各种场景,例如用户输入处理、文件操作、网络通信等。以下是一些示例:

(1)用户输入处理

使用字符串接收用户输入,并进行相应的处理。

#include <iostream>
#include <string>int main() {std::string input;std::cout << "Enter your name: ";std::getline(std::cin, input); // 读取一行输入到字符串中std::cout << "Hello, " << input << "!"; // 输出问候语return 0;
}

(2)文件操作

使用字符串读取或写入文件路径、文件名等。

#include <fstream>
#include <iostream>
#include <string>int main() {std::string filename = "example.txt"; // 文件名或路径std::ofstream outfile(filename); // 创建输出文件流,打开文件进行写入操作outfile << "Hello, World!"; // 写入内容到文件中outfile.close(); // 关闭文件流,完成写入操作return 0;
}

(3)网络通信

在处理网络请求或响应时,通常需要使用字符串来表示和处理文本数据。

#include <iostream>
#include <string>
#include <curl/curl.h>size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {std::stringbuf buf((char*)contents, size * nmemb);std::string str = std::string(buf.data(), size * nmemb);std::cout << str; // 输出接收到的文本数据return size * nmemb;
}int main() {CURL *curl = curl_easy_init();if (curl) {std::string url = "http://example.com"; // 请求的URLcurl_easy_setopt(curl, CURLOPT_URL, url.c_str());curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);curl_easy_perform(curl); // 发送请求并接收响应curl_easy_cleanup(curl);}return 0;
}

(4)字符串格式化

使用字符串来组织和呈现数据,例如日期、时间、货币等。

#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>int main() {std::time_t now = std::time(0); // 获取当前时间std::tm* localTime = std::localtime(&now); // 转换为本地时间std::ostringstream oss; // 创建输出字符串流oss << "Today is " << std::put_time(localTime, "%A %B %d, %Y"); // 格式化输出时间字符串std::string formattedDate = oss.str(); // 获取格式化后的字符串std::cout << formattedDate; // 输出格式化后的日期字符串return 0;
}
http://www.lryc.cn/news/278344.html

相关文章:

  • 你了解计算机网络的发展历史吗?
  • Qt/QML编程学习之心得:Linux下Thread线程创建(26)
  • 如何在数学建模竞赛中稳定拿奖
  • Camunda Sub Process
  • golang 生成一年的周数
  • 植物大战僵尸-C语言搭建童年游戏(easyx)
  • c++学习:容器list实战(获取目录返回容器list)
  • 【Linux】Linux系统编程——Linux目录结构
  • 卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统
  • 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft
  • 全网第一篇教你怎么总结多线程知识
  • Mondo备份linux操作系统为iso镜像 —— 筑梦之路
  • 《微信小程序开发从入门到实战》学习七十八
  • React 入门 - 05(响应式与事件绑定)
  • 【APACHE】的认识和基础配置参数
  • 英飞凌TC3xx之一起认识GTM(九)GTM相关知识简述及应用实例(CMU,CCM,TBU,MON)
  • STL之list
  • 【C++】C++11中的常见语法(上)
  • Unity 踩坑记录 AnyState 切换动画执行两次
  • 使用脚本把springboot程序部署到k8s上
  • 使用valgrind 分析缓存命中
  • leetcode-二进制求和
  • 数据采集卡:16通道16位250KHz AD,支持单点采集,程控增益
  • 物联网通讯协议NB-lot和LoRa差异分析
  • 回归预测 | Matlab基于SMA+WOA+SFO-LSSVM多输入单输出回归预测
  • Redis内存策略:「过期Key删除策略」+ 「内存淘汰策略」
  • el-table 个体行绑定点击事件时 表格中有el-radio和el-checkbox 点击触发两次事件处理方法
  • CentOs 环境下使用 Docker 部署 Ruoyi-Vue
  • axios 后端不配和添加api
  • 力扣LCR 166. 珠宝的最高价值(java 动态规划)