问题描述
我正在尝试将Windows文件(CP1252格式)转换为Linux应用程序的UTF-8格式。
我想在C ++应用程序中运行以下命令:
I am trying to convert a Windows file (CP1252 format) into a UTF-8 format for a Linux application. I want to run the following command as part of my C++ application:
iconv -f CP1252 -t UTF-8文件。 ldf | dos2unix> out.ldf
文件名 file.ldf
将作为参数传递给 main()
。
The filename file.ldf
will be passed as an argument to the 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执行的命令的一部分。
有没有其他方法可以使用问题可以解决吗?
The problem I am facing currently is to pass the incoming filename
as part of the command to be executed using the system
API.
Is there any other way in which this problem can be tackled?
推荐答案
更改此:
system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf");
到此:
system("iconv -f CP1252 -t UTF-8 " + FileName + " |dos2unix > out.ldf");
我使用了重载的 +
运算符,字符串连接。
where I used the overloaded +
operator of std::string
, for string concatenation.
这篇关于对在C ++应用程序中作为函数参数传递的文件运行'iconv'命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!