作者meone (MEONE)
看板C_and_CPP
标题[问题] vector使用
时间Sat Feb 3 00:54:39 2018
开发平台(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):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.159.98.17
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1517590482.A.608.html
※ 编辑: meone (49.159.98.17), 02/03/2018 00:56:15
1F:推 steve1012: 排一下吧大哥 讲清楚你想干嘛 挤在一团滑手机不想细看 02/03 00:59
2F:→ steve1012: 啊 02/03 00:59
3F:推 steve1012: vector 放的指标是不是指向会被 destruxt 的 object? 02/03 01:23
4F:推 LPH66: 问题在於你把同一个阵列 (的开头指标) 推进 vector 两次 02/03 12:50
5F:→ LPH66: 一般来说阵列不会以这种型式包在 vector 里 02/03 12:53
6F:→ LPH66: 以你的问题来说, 因为是宽字元字串的关系 02/03 12:57
7F:→ LPH66: 或许可以使用 basic_string<WCHAR> 来解决 02/03 12:57
8F:→ LPH66: 它跟一般的 C++ string 物件几乎一样, 只差在字元是 WCHAR 02/03 12:58
9F:→ LPH66: 一些细节上的使用可能需要注意就是 02/03 12:59
10F:推 peterwu4: 我好无聊,竟然帮忙看了… 预期的输出是两行0和1嘛? 02/03 13:11
11F:→ peterwu4: 输出是1 1是因为0那一个WCHAR array被後一个盖掉了 02/03 13:13