我正在尝试编写一个帮助我编辑mp3文件标签的程序。我已经在python中创建了一个原型,但是在C ++中我遇到了调用cli程序的麻烦。
我所做的是将用户输入存储在向量中,我想将该向量发送到命令行。
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);
答案 0 :(得分:0)
system()
需要一个char*
字符串作为输入。您需要将std::vector
个子字符串合并为一个以空格分隔的std::string
,然后将其c_str()
方法的返回值传递给system()
。
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());