Задать вопрос
@Programep

Как передать в _wsystem русские символы ( c++ windows )?

Добрый день!
Есть:
windows 7
gcc 5.1
c++ 11
asio
websocketpp
grep.
Нужно:
Вызвать команду grep, которой передаются русские буквы по сети с помощью websocketpp (asio).
Подскажите как можно это реализовать.
Пробовал через функцию _wsystem, которой напрямую передавал "grep \"<русские символы>\" <имяфайла>". Так все работает. Но когда конвертирую строку, приходящую из websocketpp и записываю ее в другую, то получается абракадабра.
Конвертирую так:
std::ostringstream cmdStr;
//переменная from_websocketpp имеет тип std::string
cmdStr << "grep \"" << from_websocketpp << "\" filename.txt>grep.txt";
std::string cmdStr_res = cmdStr.str();

size_t newsize = strlen(cmdStr_res.c_str()) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, cmdStr_res.c_str(), _TRUNCATE);
_wsystem(wcstring);

UPD1
Вот что на выходе в консоли
5c5ec045b4d24f298d4f7a7851995681.pngUPD2
Решил проблему записью, чтением в промежуточный файл с помощью std::ofstream и std::ifstream.
Спасибо за подсказки.
  • Вопрос задан
  • 523 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Programep Автор вопроса
Решил проблему записью, чтением в промежуточный файл с помощью std::ofstream и std::ifstream.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
@VioletGiraffe
На мой взгляд - нормально. Если не работает, то надо смотреть под отладчиком, что там за символы получаются.
А на входе UTF-8, или что-то другое?

P. S. Непонятно, зачем так сложно:
size_t newsize = strlen(cmdStr_res.c_str()) + 1;
вместо
cmdStr_res.length()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы