我正在尝试将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运算符进行字符串连接。

08-27 18:31