作者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://www.ptt.cc/bbs/C_and_CPP/M.1517590482.A.608.html
※ 編輯: meone (49.159.98.17), 02/03/2018 00:56:15
推 steve1012: 排一下吧大哥 講清楚你想幹嘛 擠在一團滑手機不想細看 02/03 00:59
→ steve1012: 啊 02/03 00:59
推 steve1012: vector 放的指標是不是指向會被 destruxt 的 object? 02/03 01:23
推 LPH66: 問題在於你把同一個陣列 (的開頭指標) 推進 vector 兩次 02/03 12:50
→ LPH66: 一般來說陣列不會以這種型式包在 vector 裡 02/03 12:53
→ LPH66: 以你的問題來說, 因為是寬字元字串的關係 02/03 12:57
→ LPH66: 或許可以使用 basic_string<WCHAR> 來解決 02/03 12:57
→ LPH66: 它跟一般的 C++ string 物件幾乎一樣, 只差在字元是 WCHAR 02/03 12:58
→ LPH66: 一些細節上的使用可能需要注意就是 02/03 12:59
推 peterwu4: 我好無聊,竟然幫忙看了… 預期的輸出是兩行0和1嘛? 02/03 13:11
→ peterwu4: 輸出是1 1是因為0那一個WCHAR array被後一個蓋掉了 02/03 13:13