Я пытаюсь взять строку wchar_t
из stdin, а затем преобразовать ее из Unicode в ASCII через функцию.Объявление std :: string после преобразования Unicode в ASCII дает ошибку сегментации
Функция как-то не позволяет мне использовать std :: string дальше в программе.
#include <iostream>
#include <string>
#include <locale>
#include <cstring>
#include <cwchar>
using namespace std;
bool UnicodeToAscii(wchar_t* szUnicode, char* szAscii);
int main()
{
wchar_t w[100];
wcin>>w;
char* c;
bool x=UnicodeToAscii(w,c);
cout<<c<<"\n";
string s="hi";
return 0;
}
bool UnicodeToAscii(wchar_t* szUnicode, char* szAscii)
{
int len, i;
if((szUnicode == NULL) || (szAscii == NULL))
return false;
len = wcslen(szUnicode);
for(i=0;i<len+1;i++)
*szAscii++ = static_cast<char>(*szUnicode++);
return true;
}
Вы ** не ** конвертируете любую кодировку Unicode в ASCII здесь. Юникод гораздо сложнее. – deviantfan
Кроме этого, ваш тестовый ввод поможет. Это может быть причиной. – deviantfan
Хорошо, это может быть неправильно, но я попытался приписать ** wchar_t ** в ** char ** в функции, а затем я не могу использовать std :: string в своей программе. Это довольно странно. –