跳转至

C++ 各种函数使用

286 个字 28 行代码 预计阅读时间 1 分钟

Abstract

这里归档一些 C++ 函数的使用和扩展等

std::string

std::string::substr

string substr (size_t pos = 0, size_t len = npos) const;

返回一个新建的 初始化为 string 对象的子串的拷贝 string 对象。子串是,在字符位置 pos 开始,跨越 len 个字符(或直到字符串的结尾,以先到者为准)对象的部分。

应用
// string::substr
#include <iostream>
#include <string>

int main () {
std::string str="We think in generalities, but we live in details.";
                                        // (quoting Alfred N. Whitehead)
std::string str2 = str.substr (3,5);     // "think"
std::size_t pos = str.find("live");      // position of "live" in str
std::string str3 = str.substr (pos);     // get from "live" to the end
std::cout << str2 << ' ' << str3 << '\n';
return 0;
}

std::string::find

size_t find (const string& str, size_t pos = 0) const noexcept;
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, size_type n) const;
size_t find (char c, size_t pos = 0) const noexcept;

返回值类型是std::string::size_type (size_t), 对应的是查找对象在字符串中的位置(从 0 开始,如果未查找到,该返回值是一个很大的数据(4294967295,判断时与 std::string::npos进行对比。

建议使用size_type,这样可以适应不同的平台。因为int类型的大小会根据不同平台而不同。

应用
std::string str("abcdefg");
std::string::size_type pos = str.find("abc");
if (pos != std::string::npos) {
    cout << "Not find" << endl;
}
// or
std::string str("abcdefg");
if (str.find("abc") != std::string::npos) {
    cout << "Not find" << endl;
}
扩展
  • s.find(t) 第一次出现的位置
  • s.rfind(t) 最后一次出现的位置
  • s.find_first_of(t) 任何一个字符第一次出现的位置
  • s.find_last_of(t) 任何一个字符最后一次出现的位置
  • s.find_first_not_of(t) 第一个不在 t 中的字符所在位置
  • s.find_last_not_of(t) 最后一个不在 t 中的字符所在位置

最后更新: 2023年9月6日 10:51:03
创建日期: 2023年9月6日 10:51:03
回到页面顶部