如果我使用以下main()方法运行我的C++应用程序,一切正常:
int main(int argc, char *argv[])
{
cout << "There are " << argc << " arguments:" << endl;
// Loop through each argument and print its number and value
for (int i=0; i<argc; i++)
cout << i << " " << argv[i] << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到了我的期望,我的论点被打印出来了.
但是,如果我使用_tmain:
int _tmain(int argc, char *argv[])
{
cout << "There are " << argc << " arguments:" << endl;
// Loop through each argument and print its number and value
for …Run Code Online (Sandbox Code Playgroud) 我是Windows编程的新手,在阅读了Petzold的书后,我想知道:
使用TCHAR类型和_T()函数来声明字符串或者我是否应该在新代码中使用wchar_t和L""字符串仍然是一种好习惯?
我将只针对Windows 2000及以上版本,我的代码将从一开始就是i18n.
我正在阅读关于Windows上的字符集和编码.我注意到Visual Studio编译器(用于C++)中有两个编译器标志,称为MBCS和UNICODE.他们之间有什么区别?我没有得到的是UTF-8在概念上与MBCS编码有何不同?另外,我在MSDN中找到以下引用:
Unicode是一种16位字符编码
这否定了我读到的关于Unicode的任何内容.我认为unicode可以使用不同的编码进行编码,例如UTF-8和UTF-16.有人能否对这种混乱有所了解?
我对visual studio中的"字符集"选项有疑问.
字符集
- 未设置
- 使用Unicode字符集
- 使用多字节字符集
我想知道"字符集"中三个选项之间的区别.
而且,如果我选择其中的某些内容,则会影响对英语以外语言的支持.(比如RTL语言).
TCHAR szExeFileName[MAX_PATH];
GetModuleFileName(NULL, szExeFileName, MAX_PATH);
CString tmp;
lstrcpy(szExeFileName, tmp);
CString out;
out.Format("\nInstall32 at %s\n", tmp);
TRACE(tmp);
Run Code Online (Sandbox Code Playgroud)
错误(格式化):
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t
*,...)' : cannot convert parameter 1 from 'const char [15]' to 'const wchar_t
Run Code Online (Sandbox Code Playgroud)
我只想获得该程序启动的当前路径并将其复制到CString中,以便我可以在其他地方使用它.我目前正试图通过TRACE来看看它的路径.但字符串,字符,字符数组,我不可能得到所有的海峡.有人可以给我指针吗?