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/