簡體   English   中英

如何在 C++ 中訪問 LPCWSTR 的 map 的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM