为什么我的C++代码显示阿拉伯文字?

Akı*_*maz -12 c++ wstring

我有一个代码片使用std::wstringwstringstream:

static std::wstring floatToWString(float val)
{
    std::wstringstream stream;
    stream.precision(8);
    stream.setf(std::ios_base::fixed, std::ios_base::floatfield);
    stream << val;
    return std::wstring(stream.str());
}
Run Code Online (Sandbox Code Playgroud)

当我在我的代码的'stream'变量中观察时,我看到了类似的东西:

调试的截图

据我所知,这些是一些阿拉伯语短语.这怎么可能?

我在Debug和X64配置中使用Visual Studio 2013.它是关于Wstring或Visual Studio调试模式或其他什么?我怀疑它只是一块记忆片,但在我重置电脑之后却是一样的.

编辑:对于一些谁说它是关于随机内存块或它是关于不是空终止字符串,我尝试在另一个唯一的程序,如: 试试吧

Dev*_*lar 5

如果您发布文本而不是屏幕截图,这将会非常容易.

936.37829590

那是你的double.

其余的东西恰好在记忆中.流不是以零终止的,因此调试器无法分辨停止显示内存内容的位置.

为什么那句话在那里?我们很难说.这不是您发布的代码所做的事情.

也许程序的其他部分定义了该内容的字符串文字.也许这是你在调用这个函数之前读过的某个文件的内容.

  • @AkınYılmaz:"不值得"?*计算机中的某些东西*某些东西*不确定*,某些东西*除了您发布的代码之外的其他东西 - 恰好将该短语放入靠近函数堆栈的内存中.可能是您的系统上的操作系统,编译器,库,以前读取的文件,甚至是恶意软件.*我们无法知道*.它由调试器显示,因为`std :: stringstream`不是以零终止的.这就是我说的,这就像任何人*在没有检查你的机器的情况下说的那样多.你有一些需要检查的态度...... (2认同)