2017-09-15 11 views
2

Linuxアプリケーション用のWindowsファイル(CP1252形式)をUTF-8形式に変換しようとしています。C++アプリケーションで関数引数として渡されたファイルの 'iconv'コマンドを実行しています

iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf

file.ldfmain()に引数として渡されるファイル名: 私はC++アプリケーションの一部として、次のコマンドを実行します。

例えば、

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; 
} 

私は現在直面しています問題はsystem APIを使用して実行するコマンドの一部として入ってくるfilenameを渡すことです。
この問題に対処できる他の方法はありますか?

+1

あなたは '+'演算子を使って文字列を追加できますか?例えばのように。 '' iconv -f CP1252 -t UTF-8 "+ FileName +" | dos2unix> out.ldf " –

+0

aargh !!私は今、それが本当に愚かな質問だと分かります。 :( – user3098732

答えて

1

変更この:これに

system("iconv -f CP1252 -t UTF-8 file.ldf |dos2unix > out.ldf"); 

:私は文字列の連結のために、std::stringのオーバーロードされた+演算子を使用

system("iconv -f CP1252 -t UTF-8 " + FileName + " |dos2unix > out.ldf"); 

関連する問題