禁用std:string的SSO

tru*_*ruf 0 c++ string stdstring

我想知道是否有一种方法可以以编程方式禁用字符串SSO,使其不使用本地缓冲区作为短字符串?
请问,为什么我需要这个.我很好,如果不能关闭只是想确定.

Bau*_*gen 9

由于SSO是可选的优化,因此没有标准方法可以将其关闭.

实际上,您可以只使用reserve一个不适合SSO缓冲区的字符串来强制动态分配缓冲区:

std::string str;
str.reserve(sizeof(str) + 1);
Run Code Online (Sandbox Code Playgroud)

这似乎至少适用于gcc,甚至应该可以移植,因为内部缓冲区需要适合字符串.(现场)

但我不明白为什么这会有意义.