C++ Main只接收参数的第一个字母
似乎只有第一个字母的论点收到。。。我不明白为什么C++ Main只接收参数的第一个字母,c++,windows,unicode,C++,Windows,Unicode,似乎只有第一个字母的论点收到。。。我不明白为什么 int _tmain(int argc, char** argv) { FILE* file1=fopen(argv[1],"r"); FILE* file2=fopen(argv[2],"w"); } std::cout当您使用UNICODEset进行编译时,它不是char而是wchar\t 它被编译为wmain。链接器只是没有注意到有一个不同的签名,因为它是“export C”函数,并
int _tmain(int argc, char** argv)
{
FILE* file1=fopen(argv[1],"r");
FILE* file2=fopen(argv[2],"w");
}
std::cout当您使用UNICODE
set进行编译时,它不是char
而是wchar\t
它被编译为wmain
。链接器只是没有注意到有一个不同的签名,因为它是“export C”函数,并且它的名称不包含它的参数类型
所以它应该是int_tmain(int argc,TCHAR**argv)
转换为字符很棘手,而且并不总是正确的-Win32提供的函数只能正确转换当前的ANSI代码页
如果您想在应用程序内部使用UTF-8,那么您必须在其他地方(如中)查找转换器。您的参数字符串是以UNICODE格式输入的
请参见此不要在Windows上使用char
数据类型,它会破坏Unicode支持。改用“宽”函数。在C++中,避免C的STDIO,使用文件流代替:
std::cout<<"Opening "<<strlen(argv[1])<<" and writing to "<<strlen(argv[2])<<std::endl;
#包括
#包括
#包括
内部wmain(内部argc,wchar\u t**argv){
如果(argc什么是\u tmain
?你在什么环境下工作?看到这个问题的答案了吗?我不认为它是重复的。它的措辞不同,而且你不是我见过的第一个在这些症状上结巴的开发人员。所以这个公式至少应该保持不变。你知道如何转换成字符吗?@Cenoc:don根本无法转换为char
。
#include <cstdlib>
#include <string>
#include <fstream>
int wmain(int argc, wchar_t** argv) {
if (argc <= 2) return EXIT_FAILURE;
const std::wstring arg1 = argv[1];
const std::wstring arg2 = argv[2];
std::ifstream file1(arg1.c_str());
std::ofstream file2(arg2.c_str());
}