本文整理汇总了C++中CharToWide函数的典型用法代码示例。如果您正苦于以下问题:C++ CharToWide函数的具体用法?C++ CharToWide怎么用?C++ CharToWide使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CharToWide函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ArcCharToWide
// Convert archived names and comments to Unicode.
// Allows user to select a code page in GUI.
void ArcCharToWide(const char *Src,wchar *Dest,size_t DestSize,ACTW_ENCODING Encoding)
{
#if defined(_WIN_ALL) // Console Windows RAR.
if (Encoding==ACTW_UTF8)
UtfToWide(Src,Dest,DestSize);
else
{
Array<char> NameA;
if (Encoding==ACTW_OEM)
{
NameA.Alloc(DestSize+1);
IntToExt(Src,&NameA[0],NameA.Size());
Src=&NameA[0];
}
CharToWide(Src,Dest,DestSize);
}
#else // RAR for Unix.
if (Encoding==ACTW_UTF8)
UtfToWide(Src,Dest,DestSize);
else
CharToWide(Src,Dest,DestSize);
#endif
// Ensure that we return a zero terminate string for security reason.
// While [Jni]CharToWide might already do it, be protected in case of future
// changes in these functions.
if (DestSize>0)
Dest[DestSize-1]=0;
}
示例2: TestIconv
static void TestIconv(const Stroka& utf8, const Stroka& other, ECharset enc) {
Wtroka wide0 = CharToWide(utf8, CODES_UTF8);
Wtroka wide1 = CharToWide(other, enc);
UNIT_ASSERT(wide0 == wide1);
Stroka temp = WideToChar(wide0, CODES_UTF8);
UNIT_ASSERT(temp == utf8);
temp = WideToChar(wide0, enc);
UNIT_ASSERT(temp == other);
temp = Recode(enc, CODES_UTF8, other);
UNIT_ASSERT(temp == utf8);
temp = Recode(CODES_UTF8, enc, utf8);
UNIT_ASSERT(temp == other);
size_t read = 0;
size_t written = 0;
RECODE_RESULT res = RecodeToUnicode(enc, other.c_str(), wide1.begin(), other.size(), wide1.size(), read, written);
UNIT_ASSERT(res == RECODE_OK);
UNIT_ASSERT(read == other.size());
UNIT_ASSERT(written == wide1.size());
UNIT_ASSERT(wide0 == wide1);
res = RecodeFromUnicode(enc, wide0.c_str(), temp.begin(), wide0.size(), temp.size(), read, written);
UNIT_ASSERT(res == RECODE_OK);
UNIT_ASSERT(read == wide0.size());
UNIT_ASSERT(written == other.size());
UNIT_ASSERT(temp == other);
}
示例3: ConvertNameToFull
void ConvertNameToFull(const wchar *Src,wchar *Dest)
{
if (Src==NULL || *Src==0)
{
*Dest=0;
return;
}
#ifdef _WIN_32
if (WinNT())
{
wchar FullName[NM],*NamePtr;
if (GetFullPathNameW(Src,sizeof(FullName)/sizeof(FullName[0]),FullName,&NamePtr))
strcpyw(Dest,FullName);
else
if (Src!=Dest)
strcpyw(Dest,Src);
}
else
{
char AnsiName[NM];
WideToChar(Src,AnsiName);
ConvertNameToFull(AnsiName,AnsiName);
CharToWide(AnsiName,Dest);
}
#else
char AnsiName[NM];
WideToChar(Src,AnsiName);
ConvertNameToFull(AnsiName,AnsiName);
CharToWide(AnsiName,Dest);
#endif
}
示例4: ToString
void CDocListRetrieverFromDisc::FillDocInfo(SDocumentAttribtes& attrs)
{
Stroka strFilePath = m_SmartFileFind.GetFoundFilePath(m_iCurPath);
Stroka strURL;
if (strFilePath == m_strSearchDir) {
TStringBuf left, right;
PathHelper::Split(strFilePath, left, right);
strURL = ToString(right);
} else
strURL = strFilePath.substr(m_strSearchDir.size());
if (strURL.empty())
ythrow yexception() << "Can't build url for file \"" << strFilePath
<< "\" with searchdir \"" << m_strSearchDir << "\".";
TransformBackSlash(strURL);
attrs.m_strUrl = strURL;
Stroka strTime;
if (stroka(m_strLTM) == "file") {
CTime lw_time = m_SmartFileFind.GetFoundFileInfo(m_iCurPath).m_LastWriteTime;
strTime = lw_time.Format("%d.%m.%Y %H:%M:%S");
}
if (strTime.empty())
strTime = m_strStartTime;
attrs.m_strTitle = CharToWide(strTime);
attrs.m_strSource = strURL;
attrs.m_strTitle = CharToWide(attrs.m_strSource); // ??? rewriting
}
示例5: return
int CommandData::IsProcessFile(FileHeader &NewLhd,bool *ExactMatch,int MatchType)
{
if (strlen(NewLhd.FileName)>=NM || wcslen(NewLhd.FileNameW)>=NM)
return(0);
bool Dir=(NewLhd.Flags & LHD_WINDOWMASK)==LHD_DIRECTORY;
if (ExclCheck(NewLhd.FileName,Dir,false,true))
return(0);
#ifndef SFX_MODULE
if (TimeCheck(NewLhd.mtime))
return(0);
if ((NewLhd.FileAttr & ExclFileAttr)!=0 || InclAttrSet && (NewLhd.FileAttr & InclFileAttr)==0)
return(0);
if (!Dir && SizeCheck(NewLhd.FullUnpSize))
return(0);
#endif
char *ArgName;
wchar *ArgNameW;
FileArgs->Rewind();
for (int StringCount=1;FileArgs->GetString(&ArgName,&ArgNameW);StringCount++)
{
#ifndef SFX_MODULE
bool Unicode=(NewLhd.Flags & LHD_UNICODE) || ArgNameW!=NULL && *ArgNameW!=0;
if (Unicode)
{
wchar NameW[NM],ArgW[NM],*NamePtr=NewLhd.FileNameW;
bool CorrectUnicode=true;
if (ArgNameW==NULL || *ArgNameW==0)
{
if (!CharToWide(ArgName,ArgW) || *ArgW==0)
CorrectUnicode=false;
ArgNameW=ArgW;
}
if ((NewLhd.Flags & LHD_UNICODE)==0)
{
if (!CharToWide(NewLhd.FileName,NameW) || *NameW==0)
CorrectUnicode=false;
NamePtr=NameW;
}
if (CmpName(ArgNameW,NamePtr,MatchType))
{
if (ExactMatch!=NULL)
*ExactMatch=wcsicompc(ArgNameW,NamePtr)==0;
return(StringCount);
}
if (CorrectUnicode)
continue;
}
#endif
if (CmpName(ArgName,NewLhd.FileName,MatchType))
{
if (ExactMatch!=NULL)
*ExactMatch=stricompc(ArgName,NewLhd.FileName)==0;
return(StringCount);
}
}
return(0);
}
示例6: return
int CommandData::IsProcessFile(FileHeader &NewLhd,bool *ExactMatch,int MatchType)
{
if (strlen(NewLhd.FileName)>=NM || strlenw(NewLhd.FileNameW)>=NM)
return(0);
if (ExclCheck(NewLhd.FileName,false))
return(0);
#ifndef SFX_MODULE
if (TimeCheck(NewLhd.mtime))
return(0);
#endif
char *ArgName;
wchar *ArgNameW;
FileArgs->Rewind();
for (int StringCount=1;FileArgs->GetString(&ArgName,&ArgNameW);StringCount++)
{
#ifndef SFX_MODULE
bool Unicode=(NewLhd.Flags & LHD_UNICODE) || ArgNameW!=NULL;
if (Unicode)
{
wchar NameW[NM],ArgW[NM],*NamePtr=NewLhd.FileNameW;
if (ArgNameW==NULL)
{
CharToWide(ArgName,ArgW);
ArgNameW=ArgW;
}
if ((NewLhd.Flags & LHD_UNICODE)==0)
{
CharToWide(NewLhd.FileName,NameW);
NamePtr=NameW;
}
if (CmpName(ArgNameW,NamePtr,MatchType))
{
if (ExactMatch!=NULL)
*ExactMatch=stricompcw(ArgNameW,NamePtr)==0;
return(StringCount);
}
continue;
}
#endif
if (CmpName(ArgName,NewLhd.FileName,MatchType))
{
if (ExactMatch!=NULL)
*ExactMatch=stricompc(ArgName,NewLhd.FileName)==0;
return(StringCount);
}
}
return(0);
}
示例7: MakeNameUsable
void MakeNameUsable(char *Name,bool Extended)
{
#ifdef _WIN_ALL
// In Windows we also need to convert characters not defined in current
// code page. This double conversion changes them to '?', which is
// catched by code below.
size_t NameLength=strlen(Name);
wchar NameW[NM];
CharToWide(Name,NameW,ASIZE(NameW));
WideToChar(NameW,Name,NameLength+1);
Name[NameLength]=0;
#endif
for (char *s=Name;*s!=0;s=charnext(s))
{
if (strchr(Extended ? "?*<>|\"":"?*",*s)!=NULL || Extended && (byte)*s<32)
*s='_';
#ifdef _EMX
if (*s=='=')
*s='_';
#endif
#ifndef _UNIX
if (s-Name>1 && *s==':')
*s='_';
// Remove ' ' and '.' before path separator, but allow .\ and ..\.
if ((*s==' ' || *s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.') && IsPathDiv(s[1]))
*s='_';
#endif
}
}
示例8: getWord
bool CSentence::GetWSLemmaString(Wtroka& sLemmas, const CWordSequence& ws, bool bLem) const
{
sLemmas = ws.GetCapitalizedLemma();
if (bLem)
return !sLemmas.empty();
if (sLemmas.empty())
for (int j = ws.FirstWord(); j <= ws.LastWord(); j++) {
if (!sLemmas.empty())
sLemmas += ' ';
sLemmas += getWord(j)->GetOriginalText();
}
static const Wtroka trim_chars = CharToWide(" \"\'");
TWtringBuf res = sLemmas;
while (!res.empty() && trim_chars.find(res[0]) != TWtringBuf::npos)
res.Skip(1);
while (!res.empty() && trim_chars.find(res.back()) != TWtringBuf::npos)
res.Chop(1);
if (sLemmas.size() != res.size())
sLemmas = ::ToWtring(res);
return true;
}
示例9: strcpy
void FindFile::SetMask(const char *FindMask)
{
strcpy(FindFile::FindMask,FindMask);
if (*FindMaskW==0)
CharToWide(FindMask,FindMaskW);
FirstCall=true;
}
示例10: AddError
bool TParserBase::RecodeToUtf8(Stroka& text)
{
if (Encoding == CODES_UNKNOWN) {
if (!IsStringASCII(~text, ~text + +text)) {
AddError(Substitute("Unknown encoding: \"$0\".", text));
return false;
}
} else if (Encoding == CODES_UTF8) {
if (!IsUtf(text)) {
AddError(Substitute("Invalid utf8: \"$0\".", text));
return false;
}
} else {
try {
CharToWide(text, RecodeBuffer, Encoding);
WideToUTF8(RecodeBuffer, text);
} catch (yexception&) {
AddError(Substitute("Cannot recode from $0 to utf8: \"$1\".", NameByCharset(Encoding), text));
return false;
}
}
return true;
}
示例11: return
bool FindFile::FastFind(const char *FindMask,const wchar *FindMaskW,struct FindData *fd,bool GetSymLink)
{
fd->Error=false;
#ifndef _UNIX
if (IsWildcard(FindMask,FindMaskW))
return(false);
#endif
#ifdef _WIN_32
HANDLE hFind=Win32Find(INVALID_HANDLE_VALUE,FindMask,FindMaskW,fd);
if (hFind==INVALID_HANDLE_VALUE)
return(false);
FindClose(hFind);
#else
struct stat st;
if (GetSymLink)
{
#ifdef SAVE_LINKS
if (lstat(FindMask,&st)!=0)
#else
if (stat(FindMask,&st)!=0)
#endif
{
fd->Error=(errno!=ENOENT);
return(false);
}
}
else
if (stat(FindMask,&st)!=0)
{
fd->Error=(errno!=ENOENT);
return(false);
}
#ifdef _DJGPP
fd->FileAttr=_chmod(FindMask,0);
#elif defined(_EMX)
fd->FileAttr=st.st_attr;
#else
fd->FileAttr=st.st_mode;
#endif
fd->IsDir=IsDir(st.st_mode);
fd->Size=st.st_size;
fd->mtime=st.st_mtime;
fd->atime=st.st_atime;
fd->ctime=st.st_ctime;
fd->FileTime=fd->mtime.GetDos();
strcpy(fd->Name,FindMask);
*fd->NameW=0;
#ifdef _APPLE
if (!LowAscii(fd->Name))
UtfToWide(fd->Name,fd->NameW,sizeof(fd->NameW));
#elif defined(UNICODE_SUPPORTED)
if (!LowAscii(fd->Name) && UnicodeEnabled())
CharToWide(fd->Name,fd->NameW);
#endif
#endif
fd->Flags=0;
fd->IsDir=IsDir(fd->FileAttr);
return(true);
}
示例12: return
size_t Archive::ReadCommentData(Array<byte> *CmtData,Array<wchar> *CmtDataW)
{
bool Unicode=SubHead.SubFlags & SUBHEAD_FLAGS_CMT_UNICODE;
if (!ReadSubData(CmtData,NULL))
return(0);
size_t CmtSize=CmtData->Size();
if (Unicode)
{
CmtSize/=2;
Array<wchar> DataW(CmtSize+1);
RawToWide(CmtData->Addr(),DataW.Addr(),CmtSize);
DataW[CmtSize]=0;
size_t DestSize=CmtSize*4;
CmtData->Alloc(DestSize+1);
WideToChar(DataW.Addr(),(char *)CmtData->Addr(),DestSize);
(*CmtData)[DestSize]=0;
CmtSize=strlen((char *)CmtData->Addr());
CmtData->Alloc(CmtSize);
if (CmtDataW!=NULL)
{
*CmtDataW=DataW;
CmtDataW->Alloc(CmtSize);
}
}
else
if (CmtDataW!=NULL)
{
CmtData->Push(0);
CmtDataW->Alloc(CmtSize+1);
CharToWide((char *)CmtData->Addr(),CmtDataW->Addr(),CmtSize+1);
CmtData->Alloc(CmtSize);
CmtDataW->Alloc(wcslen(CmtDataW->Addr()));
}
return(CmtSize);
}
示例13: GetPasswordText
static void GetPasswordText(wchar *Str,uint MaxLength)
{
if (MaxLength==0)
return;
#ifdef _WIN_ALL
HANDLE hConIn=GetStdHandle(STD_INPUT_HANDLE);
HANDLE hConOut=GetStdHandle(STD_OUTPUT_HANDLE);
DWORD ConInMode,ConOutMode;
DWORD Read=0;
GetConsoleMode(hConIn,&ConInMode);
GetConsoleMode(hConOut,&ConOutMode);
SetConsoleMode(hConIn,ENABLE_LINE_INPUT);
SetConsoleMode(hConOut,ENABLE_PROCESSED_OUTPUT|ENABLE_WRAP_AT_EOL_OUTPUT);
ReadConsole(hConIn,Str,MaxLength-1,&Read,NULL);
Str[Read]=0;
SetConsoleMode(hConIn,ConInMode);
SetConsoleMode(hConOut,ConOutMode);
#else
char StrA[MAXPASSWORD];
#if defined(_EMX) || defined (__VMS) || defined(__AROS__)
fgets(StrA,ASIZE(StrA)-1,stdin);
#elif defined(__sun)
strncpyz(StrA,getpassphrase(""),ASIZE(StrA));
#else
strncpyz(StrA,getpass(""),ASIZE(StrA));
#endif
CharToWide(StrA,Str,MaxLength);
cleandata(StrA,sizeof(StrA));
#endif
Str[MaxLength-1]=0;
RemoveLF(Str);
}
示例14: normalizeFQN
void normalizeFQN(const wchar_t *source,wchar_t *dest)
{
char scratch[512];
WideToChar(source,scratch,512);
char temp[512];
normalizeFQN(scratch,temp);
CharToWide(temp,dest,512);
}
示例15: strcpy
void FindFile::SetMask(const char *FindMask)
{
strcpy(FindFile::FindMask,NullToEmpty(FindMask));
#ifndef __BIONIC__
if (*FindMaskW==0)
CharToWide(FindMask,FindMaskW);
#endif
FirstCall=true;
}