C++ e> 或者\u wfopen()本来可以避免第一次出现问题place@PanagiotisKanavos关于\u tfopen宏的好观点。不幸的是,这些宏仍然源于Unicode支持意味着在ASCII和UCS-2之间做出二进制决策的时代,因此我不确定它们在主
C++ e> 或者\u wfopen()本来可以避免第一次出现问题place@PanagiotisKanavos关于\u tfopen宏的好观点。不幸的是,这些宏仍然源于Unicode支持意味着在ASCII和UCS-2之间做出二进制决策的时代,因此我不确定它们在主,c++,visual-studio-2010,unicode,utf-8,fread,C++,Visual Studio 2010,Unicode,Utf 8,Fread,e> 或者\u wfopen()本来可以避免第一次出现问题place@PanagiotisKanavos关于\u tfopen宏的好观点。不幸的是,这些宏仍然源于Unicode支持意味着在ASCII和UCS-2之间做出二进制决策的时代,因此我不确定它们在主要基于UTF-8的代码库中的使用情况。特别是,我不确定它们是否有助于发现这一特定错误,因为UTF-8和ASCII字符串在C@PanagiotisKanavos中具有相同的类型。请解释a)请?虽然C++在C++ 11中得到了CHAR16i和CHA
e> 或者
\u wfopen()
本来可以避免第一次出现问题place@PanagiotisKanavos关于\u tfopen
宏的好观点。不幸的是,这些宏仍然源于Unicode支持意味着在ASCII和UCS-2之间做出二进制决策的时代,因此我不确定它们在主要基于UTF-8的代码库中的使用情况。特别是,我不确定它们是否有助于发现这一特定错误,因为UTF-8和ASCII字符串在C@PanagiotisKanavos中具有相同的类型。请解释a)请?虽然C++在C++ 11中得到了CHAR16i和CHAR32的T,但是我仍然没有得到它。这样的代码基在遇到非UTF8文本时通常会遇到麻烦。与所有非英语文本文件一样,使用最终用户的本地编码保存。在这种情况下,您不能在环境中强制将所有内容都视为UTF8variable@PanagiotisKanavos我必须阅读sysdatapath.dat文件中类似“C:\Users\cagri.ozcan\Desktop\ç\SysData”的内容。这个文件是手动创建的。(记事本++)
bool TSimTextFileStream::ReadLine ( mstring * str )
{
*str = "";
char c = ' ';
bool first = true;
// while ( read ( hFile, &c, 1 ) )
while ( fread ( &c, 1, 1, hFile ) )
{
if (first) first = false;
#ifdef __linux__
if ( c == 13 )
continue;
else
if ( c == 10 )
break;
else
*str += c;
#else
if( c == 13 || c == 10)
break;
else
*str += c;
#endif
}
return !first;
}
mstring GetSysDataDirectory ( )
{
static mstring sysDataDir = "";
if ( sysDataDir == "" )
{
if (mIsEnvironmentVarExist("SYSDATAPATH"))
{
mstring folder = mGetEnvVar("SYSDATAPATH");
if (folder.size() == 0)
{
folder = mGetCurrentDir ( ) + "/SysData";
}
sysDataDir = folder;
}
else if ( mIsFileExist ( "SysDataPath.dat" ) )
{
TSimTextFileStream txtfile;
txtfile.OpenFileForRead( "SysDataPath.dat" );
mstring folder;
if ( txtfile.ReadLine( &folder ) )
{
sysDataDir = folder;
}
else
{
sysDataDir = mGetCurrentDir ( ) + "/SysData";
}
}
else
{
sysDataDir = mGetCurrentDir ( ) + "/SysData";
}
}
return sysDataDir;
}
bool TSimTextFileStream::OpenFileForRead(mstring fname)
{
if (hFile != NULL) CloseFile();
hFile = fopen(fname.c_str(), "r,ccs=UNICODE");
if (hFile == NULL) return false; else return true;
}
hFile = fopen(fname.c_str(), "r,ccs=UTF-8");