[问题] vector使用

楼主: meone (MEONE)   2018-02-03 00:54:39
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
visual studio 2015
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
想请问是不是vector使用上哪里出了问题导致非预期的结果,谢谢!!!!!
预期的正确结果(Expected Output):
0
1
错误结果(Wrong Output):
1
1
程式码(Code):(请善用置底文网页, 记得排版)
vector<WCHAR*> pList;
for (int ndx = 0; ndx < 2; ndx++)
{
string name = to_string(ndx);
int len2 = strlen(name .c_str()) + 1;
char outch2[MAX_PATH];
WCHAR * wChar2 = new WCHAR[len2];
wChar2[0] = 0;
MultiByteToWideChar(CP_UTF8, 0, name .c_str(), len2, wChar2, len2);
WideCharToMultiByte(CP_ACP, 0, wChar2, len2, outch2, len2, 0, 0);
delete[] wChar2;
char* pchar2 = (char*)outch2;
len2 = strlen(pchar2) + 1;
WCHAR outName2[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, pchar2, len2, outName2, len2);
pList.push_back(outName2);
}
for (int ndx = 0; ndx < pList.size(); ndx++)
{
printf("%S\n", pList[ndx]);
}
补充说明(Supplement):
作者: steve1012 (steve)   2018-02-03 00:59:00
排一下吧大哥 讲清楚你想干嘛 挤在一团滑手机不想细看啊vector 放的指标是不是指向会被 destruxt 的 object?
作者: LPH66 (-6.2598534e+18f)   2018-02-03 12:50:00
问题在于你把同一个阵列 (的开头指标) 推进 vector 两次一般来说阵列不会以这种型式包在 vector 里以你的问题来说, 因为是宽字符字串的关系或许可以使用 basic_string<WCHAR> 来解决它跟一般的 C++ string 物件几乎一样, 只差在字符是 WCHAR一些细节上的使用可能需要注意就是
作者: peterwu4 (notd)   2018-02-03 13:11:00
我好无聊,竟然帮忙看了… 预期的输出是两行0和1嘛?输出是1 1是因为0那一个WCHAR array被后一个盖掉了

Links booklink

Contact Us: admin [ a t ] ucptt.com