c++ - 如何在 C++ 中访问 LPCWSTR 映射的值
问题描述
我有一张这样的地图:
std::map<LPCWSTR, LPCWSTR> myMap = {
{L"key1", L"value1"},
{L"key2", L"value2"}
};
而且我需要从一个类型的变量中获取值,该类型const wchar_t *
的值将与键匹配。我试过了
const wchar_t * key = L"key1";
wchar_t VALUE[350] = myMap[key];
但它告诉我“聚合对象需要使用 '{...}' 进行初始化”
我也试过
wchar_t VALUE[350] = myMap.find(key)->second;
而且我得到了相同的构建错误此外,我将其添加VALUE
到另一个wchar_t
使用wcscat_s
中,这就是为什么我对变量类型没有太多余地。
我很确定我的地图设置正确,那么如何从键中获取值?
解决方案
map 中的值类型是const wchar_t*
,所以可以赋值给同类型的变量。从c++11开始,我们可以使用auto来推断类型。或者std::wstring
,如果您想复制字符串,请使用。
所有这些作业
const wchar_t* val = myMap[L"key1"];
auto* val2 = myMap[L"key1"];
LPCWSTR val3 = myMap[L"key1"];
std::wstring str_val = myMap[L"key1"];
要将字符串复制到数组中,您需要调用wcsncpy
. 可能是这样的:
wchar_t VALUE[350];
if (auto itr = myMap.find(L"key1"); itr != myMap.end()){
wcsncpy(VALUE, itr->second, sizeof(VALUE)/ sizeof(VALUE[0]));
}
容易出错且难以维护(字符串的大小可能大于硬编码的350,则只复制字符串的前面部分),最好使用std::wstring
推荐阅读
- matplotlib - 你如何在 matplotlib 中绘制一个倒置的直方图?
- sql - 根据每组的 ROW_Number 进行分组
- delphi - 常量整数值的按位非运算符背后的逻辑是什么?
- javascript - 使用 JavaScript 对文章的无序列表进行排序
- javascript - 无法从子组件调用父组件
- python - Python打开文件cvs阅读器没有属性
- java - Android中的Django JsonResponse解析错误
- python - 线程结束后释放内存
- wordpress - 您如何生成用于在 Angular 4 中创建 WordPress 用户的令牌
- python - 使用 asyncio 从任务获取数据到连接