Visual Studio 2019 - C++ wstring 赋值意外编码

问题描述 投票:0回答:1

在 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 成员属性的类的复制构造函数。

非常欢迎任何有关此行为可能原因的提示

提前致谢

PS。以下是调试器的屏幕截图: enter image description here

c++ visual-studio-2019 wstring
1个回答
0
投票

我在使用 Visual Studio 2019 工具集时也遇到了非常类似的问题。可能与此错误有关,该错误已在 VS 2022 中修复:

https://developercommunity.visualstudio.com/t/String-array-copy-breaks-VS/1620997?space=21&q=testcases+result+active+copy

https://github.com/microsoft/STL/pull/2305

© www.soinside.com 2019 - 2024. All rights reserved.