zoukankan      html  css  js  c++  java
  • C++系列(1) — string

    字符串

    字符串实现

    string是模板类 basic_string 的特化形式。

    using string = std::basic_string<char>;
    

    区分string与char *

    标准库string

    /*为了避免与用户自定义字面量的冲突,后缀“s”不能直接使用,必须用 using 打开名字空间才行*/
    using namespace std::literals::string_literals;
    auto str = "std string"s; // 后缀s,表示是标准字符串,直接类型推导
    

    原始字符串(Raw string literal)

    auto str = R"(nier:automata)"; // 原始字符串:nier:automata
    

    一个小问题:在原始字符串里面写引号 + 圆括号的形式该怎么办呢?

    对于这个问题,C++ 也准备了应对的办法,就是在圆括号的两边加上最多 16 个字符的特别“界定符”(delimiter),这样就能够保证不与字符串内容发生冲突。

    auto str5 = R"==(R"(xxx)")==";// 原样输出:R"(xxx)"
    

    C++17 string_view的简单实现

    class my_string_view final // 简单的字符串视图类,示范实现
    {
    public:
    	using this_type = my_string_view; // 各种内部类型定义
    	using string_type = std::string;
    	using string_ref_type = const std::string&;
    	using char_ptr_type = const char*;
    	using size_type = size_t;
    private:
    	char_ptr_type ptr = nullptr; // 字符串指针
    	size_type len = 0; // 字符串长度
    public:
    	my_string_view() = default;
    	~my_string_view() = default;
    	my_string_view(string_ref_type str) noexcept
    		: ptr(str.data()), len(str.length())
    	{}
    public:
    	char_ptr_type data() const // 常函数,返回字符串指针
    	{
    		return ptr;
    	}
    	size_type size() const // 常函数,返回字符串长度
    	{
    		return len;
    	}
    };
    
  • 相关阅读:
    pip3 install的时候报错timed out
    小程序经验
    require()  module.export    Object.keys()
    canvas
    弹框时出现灰色背景
    template模板的使用方法
    javascript中array常用属性方法
    封装数据请求
    wx 参数传值
    ELF文件格式分析
  • 原文地址:https://www.cnblogs.com/shijiashuai/p/14408762.html
Copyright © 2011-2022 走看看