本文介绍了对在C ++应用程序中作为函数参数传递的文件运行'iconv'命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将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'命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 06:26