Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/23: Рейтинг темы: голосов - 23, средняя оценка - 4.74
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
1

Опять мучаюсь с конвертацией string в wstring

03.06.2019, 06:01. Показов 4219. Ответов 12

Author24 — интернет-сервис помощи студентам
Опять парюсь с преобразованием string в wstring. Куча способов уже перепробовал, всё не то. То ли руки кривые, то ли всё дело в масонах и иллюминатах.
Допустим такой вот код:
C++
1
2
3
4
5
6
7
vector <string> KEK = {"fasf","fasfsa","fasfas"};
 
if (mm.find(KEK[0]) ==  mm.end()) {
    ListBox1->Items->Add("не найдено");
} else {
    ListBox1->Items->Add("найдено");
}
Вместо "mm.find(KEK[0])" должно быть что-то типа "mm.find(L"тут какой-то текст")" и это будет работать, а первый вариант нужно конвертировать, прежде чем он должен работать. Как? -- загадка.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2019, 06:01
Ответы с готовыми решениями:

Из string в wstring
Как можно получить wstring-строку из string-строки? (символы в строке латинские, поэтому проблем...

Преобразование из String ^ в wstring
Как? В гугле нет ничего толкового.

Сконвертировать string в wstring
Люди подскажите пожалуйста как правильно сконвертировать string с кириллицей в wstring т.е...

Перевод string в wstring
В проекте требуется перевод строк из string в wstring, я использую такую вот конструкцию, но данная...

12
1102 / 237 / 21
Регистрация: 20.05.2016
Сообщений: 1,068
Записей в блоге: 21
03.06.2019, 11:40 2
C++
1
2
std::string str("Hello world!!!");
std::wstring wstr(str.begin(), str.end());
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 12:56  [ТС] 3
Опять мучаюсь с конвертацией string в wstring

Опять мучаюсь с конвертацией string в wstring
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 12:57  [ТС] 4
я подозреваю что это нужно делать через цикл, но это не точно
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 13:03  [ТС] 5
Опять мучаюсь с конвертацией string в wstring

в цикле тоже не то
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
03.06.2019, 13:18 6
abortion error, я подозреваю, что ты всё неверно написал.
Например, вместо string написал vector<string>

Добавлено через 5 минут
C++
1
2
    for (int i = 0; i < 4; ++i)
        wstr[i].assign(v[i].begin(), v[i].end());
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 13:31  [ТС] 7
О, продвижения есть, при запуске программы хоть не выдаёт ошибку. Зато выдаёт её при нажатии кнопки(именно там и находиться весь код).
Опять мучаюсь с конвертацией string в wstring
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 13:33  [ТС] 8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Например, вместо string написал vector<string>
Цитата Сообщение от abortion error Посмотреть сообщение
vector <string> KEK = {"fasf","fasfsa","fasfas"};
ну так так и есть. Я хочу вектор типа string преобразовать в вектор типа wstring.
0
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
03.06.2019, 13:44 9
Цитата Сообщение от abortion error Посмотреть сообщение
ну так так и есть. Я хочу вектор типа string преобразовать в вектор типа wstring.
Зачем? Если у вас вектор в таком виде, как вы показали, то гораздо проще его сразу сделать вектором wstring.
C++
1
vector <wstring> KEK = {L"fasf", L"fasfsa", L"fasfas"};
0
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 13:48  [ТС] 10
Пользователь вводит в memo same one a text. Этот текст должен разбиться на слова. Я нашёл вот такое вот решение
C++
1
2
3
4
5
6
7
8
9
//           Разбивание строки
    AnsiString ss = Memo1->Text;string s = ss.c_str();
    string d = " ,.;!<>|/\\+-=()^%$#@!~&*:{}"; vector<string> v;
    int b, e = 0;
    while ((b = s.find_first_not_of(d, e)) != s.npos) {
        e = s.find_first_of(d, b);
        v.push_back(s.substr(b, e - b));
        b = e;
    }
где в итоге вектор "v" содержит в себе только слова. С типом wstring не получается провести те же действия с вектором "v"
0
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
03.06.2019, 13:56 11
Цитата Сообщение от abortion error Посмотреть сообщение
С типом wstring не получается провести те же действия с вектором "v"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include <vector>
 
int main()
{
    std::wstring str{ L"asd qwe, rewer!" };
    std::wstring d = L" ,.;!<>|/\\+-=()^%$#@!~&*:{}";
    std::vector<std::wstring> v;
    int b, e = 0;
    while ((b = str.find_first_not_of(d, e)) != str.npos) {
        e = str.find_first_of(d, b);
        v.push_back(str.substr(b, e - b));
        b = e;
    }
}
1
1181 / 623 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
03.06.2019, 14:16  [ТС] 12
проблему нашёл,я забыл написать слова в memo(кхм...лох). После чего-таки смог преобразовать, и в итоге сделал всё по нормальному. Всем огромное спасибо
0
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
03.06.2019, 14:24 13
Лучший ответ Сообщение было отмечено abortion error как решение

Решение

Цитата Сообщение от abortion error Посмотреть сообщение
Пользователь вводит в memo same one a text.
abortion error, о таких вещах надо сразу писать, потому что от этого ситуация и ее решение меняются.

Есть два варианта. Первый: преобразовать AnsiString в wstring сразу и бить на подстроки уже в виде wstring. Выглядеть это может примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    AnsiString ss = Memo1->Text; 
    wstring s;
    s.resize(ss.WideCharBufSize());
    ss.WideChar(&s[0], s.size()); 
 
    wstring d = L" ,.;!<>|/\\+-=()^%$#@!~&*:{}"; vector<wstring> v;
    int b, e = 0;
    while ((b = s.find_first_not_of(d, e)) != s.npos) {
        e = s.find_first_of(d, b);
        v.push_back(s.substr(b, e - b));
        b = e;
    }
Или второй, преобразовать найденные подстроки в wstring перед добавлением в вектор вот такой функцией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
#include <windows.h>
 
std::wstring toWideChar(const std::string & wstr, UINT code_page = CP_ACP)
{
    int cnt = MultiByteToWideChar(code_page, NULL, wstr.c_str(), wstr.size(), 0, 0);
    if (!cnt)
    {
        return std::wstring();
    }
    std::wstring f;
    f.resize(cnt);
    if (!MultiByteToWideChar(code_page, NULL, wstr.c_str(), wstr.size(), &f[0], cnt))
    {
        return std::wstring();
    }
    return f;
}
Код примерно такой:
C++
1
2
3
4
5
6
7
8
    AnsiString ss = Memo1->Text;string s = ss.c_str();
    string d = " ,.;!<>|/\\+-=()^%$#@!~&*:{}"; vector<wstring> v;
    int b, e = 0;
    while ((b = s.find_first_not_of(d, e)) != s.npos) {
        e = s.find_first_of(d, b);
        v.push_back(toWideChar(s.substr(b, e - b)));
        b = e;
    }
Добавлено через 4 минуты
Цитата Сообщение от abortion error Посмотреть сообщение
проблему нашёл,я забыл написать слова в memo
Очень интересно. Только вот ваш исходный вопрос не зависит от того, есть ли слова в memo или нет.
1
03.06.2019, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2019, 14:24
Помогаю со студенческими работами здесь

utf8 string to wstring
Здравствуйте, уважаемые резиденты форума и знатоки C++! Вопрос новичка к вам, помогите,...

Перевод строк std::string, std::wstring в Unicode (String)
Собственно столкнулся с проблемой, как корректно перевести к примеру текст из Edit1-&gt;Text в...

Wstring to string как конвертировать
wstring to string как конвертировать Есть текст типа wstring s=&quot;fdgd123 2133&quot; как его переделать...

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

Корректен ли каст из string в wstring?
Доброго вечера. Вот кусок кода: template&lt; typename char_type &gt; string_t&lt;char_type&gt; make_string(...

Перевод из string в wstring. Неправильная кодировка
Здорова господа! Перевожу строку из string в wstring, в строке русские символы и они выводятся в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru