0
我想从数据库加载一些字符串到一个结构,但我一直遇到一个奇怪的问题。使用我的结构数据,wcscpy_s不会影响wchar_t *
struct datum {
wchar_t* name;
wchar_t* lore;
};
我尝试下面的代码片段
datum thisDatum;
size_t len = 0;
wchar_t wBuffer[2048];
mbstowcs_s(&len, wBuffer, (const char*)sqlite3_column_text(pStmt, 1), 2048);
if (len) {
thisDatum.name = new wchar_t[len + 1];
wcscpy_s(thisDatum.name, len + 1, wBuffer);
} else thisDatum.name = 0;
mbstowcs_s(&len, wBuffer, (const char*)sqlite3_column_text(pStmt, 2), 2048);
if (len) {
thisDatum.lore = new wchar_t[len + 1];
wcscpy_s(thisDatum.lore, len + 1, wBuffer);
} else thisDatum.name = 0;
然而,尽管thisDatum.name
正确复制,thisDatum.lore
始终是垃圾,除了两个occassions。如果该项目是调试,一切都很好,但这不是一个选项。我还发现,改写了结构数据
struct datum {
wchar_t* lore;
wchar_t* name;
};
完全修复该问题为thisDatum.lore
,但给我的垃圾为thisDatum.name
。
这不是问题,但最后'else'情况下,调零错误的变量。 – WhozCraig
哎呀,谢谢。这可能是不好的。 – user3758447
为什么不使用'std :: wstring'而不是'wchar_t *'? –