Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Здравствуйте! Подскажите, пожалуйста, каким образом можно преобразовать объект типа wchar_t в string.
Работаю со стеками, и одна из задач считать с editbox некоторое значение, которое записывается только в wchar_t, а стек STL не умеет с ним работать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование из wchar_t в string (C++):

wchar_t в string - C++
Собственно, как можно преобразовать wchar_t* в string?

String в wchar_t* - C++
Всем доброго времени суток! Вопрос уже изъезжен давно, но я уже 2 недели "курю" этот форум, но так и не смог выполнить довольно простую...

String to wchar_t - C++
День всем добрый. Уже пролазил весь интернет, и ничего не понял. Вся надежда на вас. У меня есть программа. И она не дружит с...

Преобразование wchar_t в char - C++
Как преобразовать wchar_t в char ? Получаю wszName через MIB_IFTABLE.

Преобразовать string в wchar_t - C++
Подскажите как переобразовать string в wchar вот код wchar_t buffer; string s2 = "10 20 30 40 50"; swprintf(buffer, L"%f\0",s2) ...

Преобразование char* в const wchar_t * - C++
Есть кусок кода, при компиляции выскакивает ошибка о о неудачном преобразовании типов(вышеназванных) int i = 0; std::string line; ...

26
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.06.2014, 23:43 #16
Цитата Сообщение от casper007 Посмотреть сообщение
Все, что вы писали.
Я много, что писал, и всё оно (именно то, что писал) у меня работает. А что, и как ты делаешь, мне не видно, извини, не ясновидящий.
0
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
11.06.2014, 00:01  [ТС] #17
Цитата Сообщение от alsav22 Посмотреть сообщение
А что, и как ты делаешь, мне не видно
Получаем значение, которое ввел пользователь в editbox с помощью GetDlgItemTextW() в переменную wchar_t aaa.
Далее мы, в созданный нами стек stack<wstring> st добавляем полученные данные из editbox (st.push(aaa)). На последнем этапе возникает ошибка.

C++
1
2
3
4
5
6
7
8
EditBox1 = CreateWindowExW(...(HMENU)IDE_EDIT1);
 
wchar_t fromEditBox[20];
 
GetDlgItemTextW(HWMain, IDE_EDIT1, fromEditBox, 20); //получаем значение editbox в переменную fromEditBox1
 
stack<wstring> st;
st.push(fromEditBox);// пытаемся запихнуть в стек эту пресловутую переменную
, но так как она другого типа, то ничего не получается, а если объявить стек так stack<wchar_t> st, то компилятор выдаст ошибку при добавлении нового элемента (будь-то набор символов, или один символ)


Все, что я делаю, чтобы добавить в стек значение, считанное из editbox.
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
11.06.2014, 00:09 #18
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну так создай стринг
C++
1
2
wstring strTMP=fromEditBox;
st.push(strTMP);
1
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
11.06.2014, 00:16  [ТС] #19
Цитата Сообщение от ValeryS Посмотреть сообщение
ну так создай стринг
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 00:23 #20
Цитата Сообщение от casper007 Посмотреть сообщение
wchar_t fromEditBox[20];
fromEditBox, по-твоему, имеет тип wchar_t ?
Цитата Сообщение от casper007 Посмотреть сообщение
преобразовать объект типа wchar_t
0
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
11.06.2014, 00:25  [ТС] #21
Цитата Сообщение от alsav22 Посмотреть сообщение
fromEditBox, по-твоему, имеет тип wchar_t
Ну не int же
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 00:33 #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;
0
Миниатюры
Преобразование из wchar_t в string  
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
11.06.2014, 00:40  [ТС] #23
Цитата Сообщение от alsav22 Посмотреть сообщение
Разницу улавливаешь между простой переменной и массивом?
Да, вот только это уже магия, так как я так пробовал делать, но не получалось.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 00:41 #24
Цитата Сообщение от casper007 Посмотреть сообщение
Да, вот только это уже магия
Суровая реальность.
Цитата Сообщение от casper007 Посмотреть сообщение
так как я так пробовал делать
Свидетели есть, что именно так? Среда какая?
0
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 400
11.06.2014, 00:48  [ТС] #25
Цитата Сообщение от alsav22 Посмотреть сообщение
Свидетели есть, что именно так?
Приходили свидетели Иеговы - прогнал. MVS 2010

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

Добавлено через 21 секунду
Цитата Сообщение от casper007 Посмотреть сообщение
Вполне возможно, что я в объявлении стека написал тип string
Это другое дело.
0
scherbakovss201
12 / 3 / 0
Регистрация: 22.12.2015
Сообщений: 1,112
07.02.2017, 13:01 #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]]++; в этой строке ошибка. не нравяться ему квадратные скобки
0
07.02.2017, 13:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2017, 13:01
Привет! Вот еще темы с ответами:

Из wchar_t* в wstring или в string - C++
Как перевести из wchar_t* в wstring или в string ? Почему столько геморроя со строками... Есть функция, которая принимает wstring и...

Преобразование типов wchar_t в char и обратно - C++
Добрый вечер уважаемые форумчане! Как можно перевести из wchar_t в char и обратно. Если можно с примерами. За ранее спасибо!! ...

Преобразование const char >>wchar_t >>LPWSTR - C++
Здравствуйте. Хотел чтобы прога сама определяла нужный ком порт путём перебора. Путём сложения нескольких чаров получается 3-й чар, который...

Конвертор из wchar_t to string. Ошибка косвенного обращения. - C++
Вот код, Ошибки: Ошибка 3 error C2040: temp: &quot;std::string&quot; отличается по уровням косвенного обращения от &quot;wchar_t...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.