【发布时间】:2015-09-04 21:51:46
【问题描述】:
标题可能令人困惑。这是一件简单的事情,但我已经搜索并尝试了一个小时。我已经尝试了所有我找到的东西。
代码:
void test() {
// Convert
wchar_t* wcBuff;
wstring value = convert::stringToWideChar(str);
wcBuff = (wchar_t*)value.c_str();
// Draw Text
g->DrawString(wcBuff,...);
// Clean
delete wcBuff;
}
删除导致程序崩溃。
【问题讨论】:
-
我之前没用过
wstring,但是你确定要投c_str的return吗? -
@Neil Kirk 是的,没有它,这是下面一行的错误:
[Error] invalid cast from type 'std::wstring {aka std::basic_string<wchar_t>}' to type 'wchar_t*' -
wcBuff = value.c_str(); -
@NeilKirk 啊,明白了,造成了这个错误:
[Error] invalid conversion from 'const wchar_t*' to 'wchar_t*' -
现在改为
const wchar_t* wcBuffC-style casts 隐藏错误,避免它们!delete wcBuff;也很糟糕。不能从外部删除字符串的内部数据。
标签: c++ delete-operator wchar-t