我正在尝试将Windows文件(CP1252格式)转换为Linux应用程序的UTF-8格式。
我想在我的C++应用程序中运行以下命令:iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf
文件名file.ldf
将作为参数传递给main()
。
例如。
int main (int argc, char* argv[])
{
string FileName = "Invalid";
if (argc == 2) {
FileName = argv[1];
system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf");
//do further parsing on file
}
else
cout << "ERROR:: invalid number of arguments"<< endl;
return 0;
}
我当前面临的问题是将传入的
filename
传递为要使用system
API执行的命令的一部分。还有其他方法可以解决此问题吗?
最佳答案
更改此:
system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf");
对此:
system("iconv -f CP1252 -t UTF-8 " + FileName + " |dos2unix > out.ldf");
我在其中使用了
+
的重载std::string
运算符进行字符串连接。