我在使用""(即空字符串)初始化std :: string变量时遇到问题.它导致以前工作的代码中的奇怪行为.以下陈述是错误的吗?
std::string operationalReason = "";
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码时一切正常:
std::string operationalReason;
operationalReason.clear();
Run Code Online (Sandbox Code Playgroud)
我相信字符串文字存储在一个独立于编译器的内存位置.我看到的问题实际上是否表明存储器已损坏?如果是这样,我将使用该clear() 函数隐藏它.
谢谢.
Naw*_*waz 25
std::string operationalReason; //is enough!
Run Code Online (Sandbox Code Playgroud)
它调用默认构造函数,并始终创建一个空字符串.
所以我想说std::string operationalReason = ""是矫枉过正.
Arm*_*yan 11
std::string operationalReason = "";
从技术上讲,这是完美的,但更常见,也很好
std::string operationalReason;
字符串的默认ctor将创建一个空字符串
是的,你是正确的字符串文字存储在一个不可变的内存等等等等...但字符串copy-ctor总是复制字符串或传递的C字符串
如果你只是这样做会发生什么std::string operationalReason;?这应该与您提供的两个示例具有相同的效果。如果实际上您在使用std::string operationalReason = "";可能表明字符串数据存储已损坏的表单时遇到问题,但这同样可能意味着内存的某些 OTHER 部分已损坏,并且该特定行导致它以不同的方式显示。
当您使用""表单或稍后在运行时,您的代码是否会立即崩溃?您是否能够在 valgrind 或类似程序下运行它以查看它是否发现内存问题?如果您将字符串初始化为除 之外的某个文字会发生什么""?