如何将用户从控制台输入的内容读入Unicode字符串?

时间:2010-07-12 16:37:14

标签: c++ string unicode atl utf-16

C ++初学者的问题。这是我目前的情况:

// From tchar.h
#define _T(x)       __T(x)

...

// From tchar.h
#define __T(x)      L ## x

...

// In MySampleCode.h
#ifdef _UNICODE
    #define tcout wcout
#else
    #define tcout cout
#endif

...

// In MySampleCode.cpp
CAtlString strFileName;
if (bIsInteractiveMode)
{
char* cFileName = new char[513];
tcout << endl;
tcout << _T("Enter the path to a file that you would like to XYZ(purpose obfuscated) ") << endl;
tcout << _T(">>> ");            
cin.getline(cFileName, 512);
strFileName = cXmlFileName;
}

// Demonstrates how CAtlString can be printed using `tcout`.
tcout << _T("File named '") << strFileName.GetString() << _T("' does not exist.") << endl;

这恰好在美国“工作”,但我不知道如果...说法国用户正在运行此应用并开始在命令行上输入奇怪的字符,例如Çanemeplaîtpas.xml,将会发生什么。我正在寻找一种简洁的方法来填充CAtlString类型的字符串。输入的最大长度总是可以设置得足够长,但理想情况下我想将unicode和非unicode条目限制为相同数量的字符。希望这样做是相当容易和优雅的。

1 个答案:

答案 0 :(得分:4)