c wcout std:: значение карты

#map #c

#Карта #c

Вопрос:

У меня есть std:: map с именем ‘prompts’, который объявляется следующим образом:

 std::map<const int, wstring, std::less<int>, std::allocator<std::pair<const int, std::wstring> >> prompts;
 

и он хранит пары int ‘key’ и wstring ‘value’. Если я сделаю это:

 wcout << prompts[interpreter->get_state()];
 

Компилятор (vc10) жалуется

 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
 

Что мне нужно сделать, чтобы получить значение wstring, возвращаемое с карты, для печати с помощью wcout? Какое-то приведение? Или …?

Ответ №1:

В первой строке отсутствует std::

std::map<const int, std:: wstring, std::less<int>, std::allocator<std::pair<const int, std::wstring> >> prompts;

Вы должны написать std::wcout вместо wcout .

Я только что попробовал этот код, и он компилируется.

 #include <map>
#include <iostream>
#include <string>

int main()
{
    std::map<const int, std::wstring, std::less<int>, std::allocator<std::pair<const int, std::wstring> >> prompts;
    std::wcout << prompts[1];
    return 0;
}
 

Комментарии:

1. Да, вы правы… Я также включил <string.h> вместо <string>, что тоже не помогло …. глупая ошибка с моей стороны. Спасибо за помощь…

2. Я бы обвинил язык, а не вас.