Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中调用命令行程序+;_C++_Vector - Fatal编程技术网

C++ 在C+中调用命令行程序+;

C++ 在C+中调用命令行程序+;,c++,vector,C++,Vector,我正试图写一个程序,帮助我编辑mp3文件的标签。我在Python中制作了一个原型,但是在C++中,调用CLI程序有麻烦。p> 我所做的是将用户输入存储在一个向量中,我想将该向量发送到命令行 vector<string> cmd; cmd.push_back("id3v2"); cmd.push_back("-a " + artist); cmd.push_back("-t " + trackTitle); cmd.push_back("-A " + albumTitle); cmd.

我正试图写一个程序,帮助我编辑mp3文件的标签。我在Python中制作了一个原型,但是在C++中,调用CLI程序有麻烦。p> 我所做的是将用户输入存储在一个向量中,我想将该向量发送到命令行

vector<string> cmd;
cmd.push_back("id3v2");
cmd.push_back("-a " + artist);
cmd.push_back("-t " + trackTitle);
cmd.push_back("-A " + albumTitle);
cmd.push_back("-T " + trackNum);
system(cmd);
vectorcmd;
命令推回(“id3v2”);
命令:推回(“-a”+艺术家);
命令:向后推(“-t”+轨迹标题);
cmd.push_back(“-A”+专辑标题);
命令:向后推(“-T”+trackNum);
系统(cmd);
system()
需要一个
char*
字符串作为输入。您需要将
std::vector
子字符串连接到一个以
std::string
分隔的空格中,然后将其
c_str()
方法的返回值传递给
system()

std::string连接(const std::vector&vec,char delim='')
{
std::ostringstream oss;
如果(!vec.empty())
{

oss你可能想读?谢谢你的建议。我还在努力学习,很多东西还是没有意义。非常感谢,我能够让它工作。也许这不是完成这项任务的理想方式,有没有更好的方法呢?@tj2jz只是附加到单个字符串而不是使用向量?@tj2jz阅读关于管道的文章如果要读取应用程序的输出,请使用dlers(popen)
std::string join(const std::vector<std::string> &vec, char delim = ' ')
{
    std::ostringstream oss;
    if (!vec.empty())
    {
        oss << vec[0];
        for(size_t idx = 1; idx < vec.size(); ++idx)
            oss << delim << vec[idx];
    }
    return oss.str();
}

...

std::vector<std::string> cmd;
cmd.push_back("id3v2");
cmd.push_back("-a " + artist);
cmd.push_back("-t " + trackTitle);
cmd.push_back("-A " + albumTitle);
cmd.push_back("-T " + trackNum);

system(join(cmd).c_str());
std::ostringstream cmd;
cmd << "id3v2";
cmd << " -a " << artist;
cmd << " -t " << trackTitle;
cmd << " -A " << albumTitle;
cmd << " -T " << trackNum;

system(cmd.str().c_str());