#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. Я бы обвинил язык, а не вас.