@sddvxd

Как правильно перевести wstring в char* и обратно?

Добрый день! Сейчас занимаюсь изучением сокетов и столкнулся с проблемой

wstring strTheNameOfTheFile = FindFileData.cFileName;
char* serial = (char*)strTheNameOfTheFile.c_str();
iResult = send(ConnectSocket, serial, (int)strlen(serial), 0);

:
тут я передаю юникод строку конвертированную в char*

сервер:
char* echo = new char[1024];
			
			do {

				iResult = recv(AcceptSocket, echo, 1024, 0);
				if (iResult > 0  && iResult == 1024) {
					FILE * pFile;

					stringstream ss;
					ss << counter << echo;
					string str(ss.str());
					cout << iResult<<endl;
					
					pFile = fopen(str.c_str(), "ab");

					fwrite(echo, iResult, 1, pFile);
					fclose(pFile);
				}
					
				else if (iResult < 1024 && iResult != 0) {

					FILE * pFile;

					stringstream ss;
					ss << counter << echo;
					string str(ss.str());

					wstring ws(&echo[0], &echo[(int)strlen(echo)]);
					wcout << ws << endl;

					pFile = fopen(str.c_str(), "ab");

					fwrite(echo, iResult, 1, pFile);
					fclose(pFile);

					counter++;
					int sendD = send(AcceptSocket, sendC, 3, 0);
					
				}
				else
					cout << "Disconnect..." << endl;

			} while (iResult > 0);


тут пытаюсь принять ansii и конвертировать в юникод
помогите пожалуйста разобраться с тем, как правильно производить конвертацию
Извиняюсь за повторение кода или использование устаревших C функций для управления символами. С понимаем символов пока все плохо
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Если речь идет о винде, то есть функции API для конвертации: WideCharToMultiByte/MultiByteToWideChar
Под линухом, наверное нужно использовать какую-либо библиотеки или самому конвертировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы