有没有一些方法可以在C++,win32中将向量转换为向量?
我有这个字符串向量与数字:
std::vector<std::string> DataNumbers;
Run Code Online (Sandbox Code Playgroud)
我需要将此向量字符串转换为向量整数.
我想从 .dll 字符串表中读取 utf-8 测试。像这样的东西
LPWSTR nnW;
LoadStringW(hMod, id, nnW, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)
之后,我想转换LPWSTR nnW
到std::wstring nnWstring
。我是这样试的:LPWSTR nnW; LoadStringW(hMod, id, nnW, MAX_PATH);
const int length = MultiByteToWideChar(CP_UTF8,
0, // no flags required
(LPCSTR)nnW,
-1, // automatically determine length
NULL,
0);
std::wstring nnWstring(length, L'\0');
if (!MultiByteToWideChar(CP_UTF8,
0,
(LPCSTR)nnW,
-1,
&nnWstring[0],
length))
MessageBoxW(NULL, (LPCWSTR)nnWstring.c_str(), L"wstring", MB_OK | MB_ICONERROR);
Run Code Online (Sandbox Code Playgroud)
之后在MessageBoxW 中只显示第一个字母。
我创建了一张地图:
map<int, int> mapOriginal;
Run Code Online (Sandbox Code Playgroud)
在填充数据后,看起来像这样:
mapOriginal[0] = 3;
mapOriginal[1] = 2;
mapOriginal[2] = 1;
Run Code Online (Sandbox Code Playgroud)
而mapOriginal ouptut是:
0-> 3
1-> 2
2-> 1
Run Code Online (Sandbox Code Playgroud)
我想创建另一张地图:
map<int, int> mapReverse;
Run Code Online (Sandbox Code Playgroud)
但是如何将mapOriginal值反转为mapReverse:
mapReverse ouptut将是:
0-> 1
1-> 2
2-> 3
Run Code Online (Sandbox Code Playgroud) 我用mingw,c ++我想打开多个文件,如下所示:
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "TXT\0"
"*.txt\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT;
ofn.lpstrDefExt = "txt";
Run Code Online (Sandbox Code Playgroud)
但是我如何获得文件名?如果我检查szFileName变量,它只包含文件夹名称.
我创建了一个列表视图,之后我想获取标题文本,如下所示:
HWND hwndHD = ListView_GetHeader(hListView);
HDITEM hdi;
Header_GetItem(hwndHD, 2, (LPHDITEMA) &hdi);
unsigned char HDtext[lMAX];
hdi.pszText = (LPSTR)HDtext;
SendMessage(hListView, HDM_GETITEM, (WPARAM) 0, (LPARAM) &hdi);
std::string str(HDtext, HDtext + sizeof(HDtext));
MessageBox(hwnd, str.c_str() , "CreateFile", MB_OK);
Run Code Online (Sandbox Code Playgroud)
但它没有用,我做错了什么?
我创建了一个listView:
ListView = CreateWindow(WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_REPORT,
50,50,200,100,
hwnd, (HMENU) ID_LISTV,
GetModuleHandle(NULL),
NULL);
Run Code Online (Sandbox Code Playgroud)
之后我填写数据
之后我想删除所有项目和列.我怎样才能做到这一点?谢谢!
我使用 minGW 和 eclipse。我是这样制作HICON的:
case WM_CREATE:
{
...
hIcon = (HICON)LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
if(hIcon) { SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); }
else { MessageBoxW(hwnd, "ico not found", "ico not found", MB_OK | MB_ICONERROR); }
...
}
Run Code Online (Sandbox Code Playgroud)
因此,这样 .ico 必须与 .exe 位于同一文件夹中 我如何将此 .ico 构建到 exe 中?
我用mingw编译器.如何转换wchar_t
为char
?
Data(HWND hwnd, wchar_t szFileName[MAX_PATH])
{
string sIn;
ifstream infile;
infile.open(szFileName);
infile.seekg(0,ios::beg);
// fill vector with file rows
while ( getline(infile,sIn ) )
{
fileRows.push_back(sIn);
}
}
Run Code Online (Sandbox Code Playgroud)
我想将wchar_t szFileName转换为char szFileNameChar.