[英]How can I access the value of a map of LPCWSTR in C++
我有一個 map 像這樣:
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;
而且我得到相同的構建錯誤此外,我正在使用wcscat_s
將此VALUE
添加到另一個wchar_t
,這就是為什么我對變量類型沒有太多余地。
我很確定我的 map 設置正確,那么如何從鍵中獲取值?
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.