在 Visual Studio 2019 中执行两个 wstring 对象之间的简单赋值时,我们遇到了意外问题。
长代码变短:
wstring source = L"Test-";
wstring dest;
dest = source;
分配后,调试器(甚至正在调试的应用程序)不会将
dest
显示为“Test-”,而是显示为表意文字。
比较
source.c_str()
和 dest.c_str()
的 strlen,源长度为 5,目标长度为 3(这与显示的表意文字数量匹配)
显然这种情况只发生在代码的一个点上,无论我们在其他地方分配 wstrings,我们都不会遇到类似的问题。意外行为发生在一个特定点,即具有 wstring 成员属性的类的复制构造函数。
非常欢迎任何有关此行为可能原因的提示
提前致谢
我在使用 Visual Studio 2019 工具集时也遇到了非常类似的问题。可能与此错误有关,该错误已在 VS 2022 中修复: