C++ string:字符串与字符串流
包含头文件:#include <string>
一、字符串常用操作
- C++
string
与C语言char*
之间的相互转换str.c_str()
std::string()
- 字符串与
float
/int
之间的相互转换- 字符串转
int
/float
利用std::stoi
将字符串转为整型 / 转为float型:std::stof
, 即string-to-float int
/float
转字符串std::to_string()
- https://stackoverflow.com/questions/57865389/what-is-difference-between-stdstof-and-atof-when-each-one-should-be-used
- 字符串转
- 返回字符串长度
- C++中的字符串
std::string
可以视为std::vector<char>
类型,因此可以用.size()
函数返回字符串的字符长度(不含'\n'结尾符号),同.length()
方法。
- C++中的字符串
二、字符串分割
应用场景:从txt/obj等文本文件中逐行读取数据,并按照
或,
进行数据分割
方法一:使用C++字符串分割的相关函数find
和 substr
适用场景:每一行字符串的格式是固定的,例如存储关键点坐标的txt文件,形如x, y
格式
int idx = str.find(','); // 获取字符的索引位置
string x_pos = str.substr(0, idx); // 起始坐标+子串长度
string y_pos = str.substr(idx+1);
类似的函数:find_first_of
, find_last_of
方法二:使用字符串流stringstream
适用场景:字符串中带有空格,以空格进行分隔
string str = " #include \"frame_warp_core.glsl\"";
std::istringstream ss(str);
ss >> token;
std::cout << "token: " << token << std::endl; // #include
ss >> token;
std::cout << "token: " << token << std::endl; // "frame_warp_core.glsl"
- 参考链接:Program to Parse a comma separated string in C++: https://www.geeksforgeeks.org/program-to-parse-a-comma-separated-string-in-c/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)