Получение ошибки сборки при назначении (преобразовании) массива TCHAr в объект std :: string - PullRequest
0 голосов
/ 30 января 2012

Я использую набор символов Unicode (общее требование слишком использовать только Unicode). Я хочу каким-то образом поместить содержимое массива TCHAr в std :: string obj, чтобы я мог использовать функции этого obj. Мой фрагмент кода выглядит следующим образом:

TCHAR arr[256];
std::wstring w_str;
std::string s_str;

w_str(arr);  ---> Error 1
s_str(w_str.begin,w_str.end);  ---> Error 2. 

Ошибка 1: я получаю ошибку C2064: «Срок не оценивается как функция принимает 1 параметр.

Ошибка 2: я получаю ошибку C2064: «Срок не оценивается как функция, принимающая 2 параметра.

Может ли кто-нибудь любезно помочь мне в этом; дайте мне знать, как назначить содержимое TCHAR (используя набор символов Unicode) для строкового объекта.

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Я предполагаю, что вы пытаетесь вызвать конструктор для std::wstring и std::string, но вы делаете это неправильно.Вместо этого инициализируйте объекты во время объявления:

TCHAR arr[256];
std::wstring w_str(arr);
std::string s_str(w_str.begin(), w_str.end());

Это не решит все ваши проблемы.Вы не можете преобразовать напрямую из строки Unicode (широкая) в узкую строку.Вам нужно будет сделать какое-то обращение.См. этот вопрос для возможных решений.

Странно вообще требовать этого.Выберите тип строки и придерживайтесь его.Если вы программируете Windows и, следовательно, используете строки Unicode, вы хотите использовать std::wstring повсюду.

0 голосов
/ 30 января 2012

Вы пытаетесь вызвать строковые объекты как функцию (то есть, вызывая operator()), но std::basic_string (из которого std::string и std::wstring определяется по типу) не имеет этого оператора. Вместо этого вы должны выполнить инициализацию при построении строк:

std::wstring w_str(arr);
std::string s_str(w_str.begin(), w_str.end());

Однако я думаю, что вы все равно получите ошибку с последней конструкцией, потому что std::string и std::wstring используют разные типы символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...