在 C++ 中,有多种方法可以实现字符串截取。以下是一些常用的技巧:
substr
函数substr
是 C++ 标准库 <string>
中的成员函数,用于截取字符串。函数原型如下:
std::string substr(size_t pos = 0, size_t len = npos);
其中,pos
表示截取子串的起始位置(从 0 开始计数),len
表示截取的字符数,默认为整个字符串的长度。
示例:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::string sub = str.substr(0, 5); // 截取前 5 个字符
std::cout << sub << std::endl; // 输出 "Hello"
return 0;
}
[]
运算符使用 []
运算符可以方便地截取字符串中的子串。例如,str[0]
表示截取字符串 str
的第一个字符,str[6]
表示截取从索引 6 开始的子串(直到字符串末尾)。
示例:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
char first_char = str[0]; // 获取第一个字符
std::string sub = str.substr(6); // 截取从索引 6 开始的子串
std::cout << first_char << std::endl; // 输出 "H"
std::cout << sub << std::endl; // 输出 "World!"
return 0;
}
需要注意的是,使用 []
运算符截取子串时,如果起始索引超出了字符串的范围,程序不会报错,而是会返回一个空字符串。因此,在使用时需要确保起始索引在有效范围内。
std::string_view
std::string_view
是 C++17 引入的一个新类型,它提供了一种轻量级的非拥有字符串引用方式。通过 std::string_view
,可以方便地截取字符串并进行操作,而无需复制整个字符串。
示例:
#include <iostream>
#include <string>
#include <string_view>
int main() {
std::string str = "Hello, World!";
std::string_view sub = str.substr(0, 5); // 使用 string_view 截取前 5 个字符
std::cout << sub << std::endl; // 输出 "Hello"
return 0;
}
需要注意的是,std::string_view
不拥有引用的字符串,因此在程序结束前需要确保引用的字符串仍然有效。此外,std::string_view
对象应的字符串不能被修改,否则会导致未定义行为。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。