我正在尝试传递从我的Hadoop流的输入文件中收到的变量。 输入文件包含视频的名称,例如:
Input_file.txt:
视频0001.mp4
我将输入的值存储在变量键中
int main (int argc, const char* argv[]){
string key;
string value ="1";
while(cin>>key) {
system("/usr/local/lib/hadoop-2.7.3/bin/hadoop fs -get /user/root/BDs/Video0001.mp4 /home/master/Desktop/Extract_signature/BDs/");
system("mkdir /home/master/Desktop/Extract_signature/SIGN");
// ....
// ....
}
}
我的目标是将视频名称替换为Key变量的值并运行系统命令
所以更换
system("/usr/local/lib/hadoop-2.7.3/bin/hadoop fs -get /user/root/BDs/Video0001.mp4
由
system("/usr/local/lib/hadoop-2.7.3/bin/hadoop fs -get /user/root/BDs/<Value of key>
用std::string
(或std::ostringstream
)构造system()
的整个参数,并使用结果的c_str()
函数将其传递给system()
:
std::string hadoopCmd = "/usr/local/lib/hadoop-2.7.3/bin/hadoop fs -get /user/root/BDs/";
hadoopCmd += key;
system(hadoopCmd.c_str());
此版本在其他类型的格式方面比std::string
更灵活,key
std::ostringstream hadoopCmd;
hadoopCmd << "/usr/local/lib/hadoop-2.7.3/bin/hadoop fs -get /user/root/BDs/"
<< key;
system(hadoopCmd.str().c_str());