这可能是偏离主题的,因为没有代码,没有输出,没有任何东西,但是这里.
我看到C++可以知道的唯一途径"this"是std::string是因为引号是一个语言结构,很像char单引号之间.
但如果它是真正的答案,我会感到非常惊讶:这是否意味着std::stringC++必须在引号之间解释文本?那么标准的lib不仅仅是一个扩展,而是C++的一部分.
如果我想开发自己的MyString类,并且我想MyStrings使用引号在运行中创建该怎么办?我能够做到这一点还是""语法不可避免地与std::string?相关联?
我还想过""成为一个运算符(毕竟C++有operator()),但我找不到任何关于它的东西.
让我们澄清一些误解.字符串文字的类型是a const char[],而不是 a std::string.例如,类型"this"将是const char[5](有一个空终止符).
这是否意味着
std::stringC++必须在引号之间解释文本?
不(不是std::string)并且utf-8字符串和宽字符串有多个前缀,例如L"wide".
那么标准的lib不仅仅是一个扩展,而是C++的一部分.
这是真的,但不适用于字符串文字.你的类型nullptr是std::nullptr_t.还有std::byte标准的特殊待遇.一个std::initializer_list构造函数使用列表初始化时选择.结果sizeof是a std::size_t和typeid它是a std::type_info.可能还有其他我现在想不到的.
我能够做到这一点还是
""语法不可避免地与std::string?
它不是std::string,但是,那是不可能的.但是,您可以定义用户定义的文字.std::string有一个:
using namespace std::string_literals;
auto string = "this"s;
static_assert(std::is_same_v<decltype(string), std::string>); // ok
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |