Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
casper007
 Аватар для casper007
64 / 64 / 22
Регистрация: 12.12.2013
Сообщений: 389
#1

Преобразование из wchar_t в string - C++

10.06.2014, 21:19. Просмотров 1585. Ответов 26
Метки нет (Все метки)

Здравствуйте! Подскажите, пожалуйста, каким образом можно преобразовать объект типа wchar_t в string.
Работаю со стеками, и одна из задач считать с editbox некоторое значение, которое записывается только в wchar_t, а стек STL не умеет с ним работать.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
casper007
 Аватар для casper007
64 / 64 / 22
Регистрация: 12.12.2013
Сообщений: 389
11.06.2014, 00:25  [ТС]     Преобразование из wchar_t в string #21
Цитата Сообщение от alsav22 Посмотреть сообщение
fromEditBox, по-твоему, имеет тип wchar_t
Ну не int же
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 00:33     Преобразование из wchar_t в string #22
Цитата Сообщение от casper007 Посмотреть сообщение
Ну не int же
Конечно не int, а массив wchar_t (по сути указатель на wchar_t). Разницу улавливаешь между простой переменной и массивом?
А если так, то и wstring тут не нужен. Вот код, вот работа. Вопросы есть?
C++
1
2
3
4
    stack<wstring> st;
    wchar_t fromEditBox[20] = L"ASDF asdf";
    st.push(fromEditBox);
    wcout << st.top() << endl;
Миниатюры
Преобразование из wchar_t в string  
casper007
 Аватар для casper007
64 / 64 / 22
Регистрация: 12.12.2013
Сообщений: 389
11.06.2014, 00:40  [ТС]     Преобразование из wchar_t в string #23
Цитата Сообщение от alsav22 Посмотреть сообщение
Разницу улавливаешь между простой переменной и массивом?
Да, вот только это уже магия, так как я так пробовал делать, но не получалось.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 00:41     Преобразование из wchar_t в string #24
Цитата Сообщение от casper007 Посмотреть сообщение
Да, вот только это уже магия
Суровая реальность.
Цитата Сообщение от casper007 Посмотреть сообщение
так как я так пробовал делать
Свидетели есть, что именно так? Среда какая?
casper007
 Аватар для casper007
64 / 64 / 22
Регистрация: 12.12.2013
Сообщений: 389
11.06.2014, 00:48  [ТС]     Преобразование из wchar_t в string #25
Цитата Сообщение от alsav22 Посмотреть сообщение
Свидетели есть, что именно так?
Приходили свидетели Иеговы - прогнал. MVS 2010

Добавлено через 2 минуты
Вполне возможно, что я в объявлении стека написал тип string
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 01:05     Преобразование из wchar_t в string #26
Цитата Сообщение от casper007 Посмотреть сообщение
MVS 2010
Тогда и говорить не о чем. Этот код проверен и запущен именно в MVS 2010. Думал, может борланд какой-нибудь.
В wstring есть конструктор, который принимает указатель на wchar_t (он же - массив элементов wchar_t), и создаёт wstring. Поэтому не может не работать.

Добавлено через 21 секунду
Цитата Сообщение от casper007 Посмотреть сообщение
Вполне возможно, что я в объявлении стека написал тип string
Это другое дело.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2017, 13:01     Преобразование из wchar_t в string
Еще ссылки по теме:

C++ String в wchar_t*
C++ Преобразовать string в wchar_t
C++ Почему const wchar_t* воспринимается как wchar_t* ?
Wchar_t и unsigned wchar_t в windows C++
Преобразование string* в string C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
scherbakovss201
-15 / 1 / 0
Регистрация: 22.12.2015
Сообщений: 554
07.02.2017, 13:01     Преобразование из wchar_t в string #27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int wordcounts()
{
int yy = 00;
wchar_t str1[255];
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
const int length = 100; 
map m;
wstring words[length];
wscanf(L"%s", str1);
words[yy] = str1;
m[words[yy]]++;
 
map::const_iterator it = m.begin();
while (it != m.end())
{
cerr << (*it).first << ": " << (*it).second << endl;
++it;
}
return 0;
}
Ошибка1error C2679: бинарный "[": не найден оператор, принимающий правый операнд типа "std::wstring" (или приемлемое преобразование отсутствует) c:\users\sergey\documents\visual studio 2013\projects\test\test\test.cpp2191test

2IntelliSense: отсутствует оператор "[]", соответствующий этим операндам
типы операндов: std::map<std::string, int, std::less, std::alloc

m[words[yy]]++; в этой строке ошибка. не нравяться ему квадратные скобки
Yandex
Объявления
07.02.2017, 13:01     Преобразование из wchar_t в string
Ответ Создать тему
Опции темы

Текущее время: 09:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru