我有一个小问题,但我不知道为什么..
我有一个 std::wstring text
,其值为 L"test"
然后我尝试像这样打印它的第一个字符:
OutputDebugString(&text[0]);
但结果是test
..
当我使用 OutputDebugString(&text[1]);
结果是est
我认为数组访问应该给我指定位置的字符.. 谁能告诉我我应该做什么或做错了什么?
我也试过 .at(i);
结果相同。
明白了:
wchar_t st = text[0];
OutputDebugString(&st);
Alex Reinking 表示这是一个更好、更安全的解决方案:(因为字符串随后包含一个空终止符)
wchar_t st[3] = { text[0], 0x0 };
OutputDebugString(&st[0]);
感谢帮助
最佳答案
这是因为,在内存中,字符串看起来像这样:
V-- &text[0]
addr: 0x80000000 0x80000001 0x80000002 0x80000003 0x80000004
text: t, e, s, t, 0x00
^-- text[0]
因此,当您请求 text[1]
的地址时,您得到的是:
V-- &text[1]
addr: 0x80000001 0x80000002 0x80000003 0x80000004
text: e, s, t, 0x00
^-- text[1]
剩下的就是 e,x,t,NULL
或字符串“ext”。您调用的函数将使用终止符之前的所有字符。
关于c++ 从 wstring 中获取字符 i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26494524/