gpt4 book ai didi

C++ popen() 参数

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:55 25 4
gpt4 key购买 nike

我有一个关于在 C++ 中使用 popen() 的问题。

下面的代码工作正常,您可以将“ls”直接作为 popen() 的第一个参数。

FILE *fp;
char returnData[64];

fp = popen("ls","r");
if (fp == NULL){
}
else{
while (fgets(returnData, 64, fp) != NULL){
fprintf( stdout, "%s", returnData );
}
}

但是,这段代码不起作用。为什么我不能使用名为 command 的字符串作为参数?有必要附加.c_str()。

FILE *fp;
char returnData[64];
string command = "ls";

fp = popen(command,"r"); // fp = popen(command.c_str(),"r");
if (fp == NULL){
}
else{
while (fgets(returnData, 64, fp) != NULL){
fprintf( stdout, "%s", returnData );
}
}

有人可以解释一下区别吗?

谢谢

最佳答案

tl;dr您正在混合使用 C 和 C++。

popen() 是一个 C-API 函数,因此字符串是 C-strings(NUL 终止数组 chars).

您正在使用 std::string,一个 C++ 对象,并且没有从 std::stringconst char * 的自动转换>,因此您必须使用 c_str() 方法自行提供。

关于C++ popen() 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32268251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com