gpt4 book ai didi

c++ - 在 C++ 中从 FILE 结构解析为字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:48 25 4
gpt4 key购买 nike

我正在尝试使用以下代码在 Windows 上捕获系统命令,以将输出作为字符串返回。

std::string exec(char* cmd) {
FILE* pipe = _popen(cmd, "r");
if (!pipe) return "ERROR";
std::ifstream ifs(pipe);
std::string content( (std::istreambuf_iterator<char>(ifs) ),
(std::istreambuf_iterator<char>() ) );
printf("%s", content);
return content;
}

当我这样调用函数时:

char *command = "set";
std::string results = exec(command);
printf("%s", results);
getchar();

输出只是几个随机字节。

    ╝÷:ö°:

我试图将所有结果附加到 1 个长字符串中。谁能告诉我我做错了什么?我尝试使用命令将 stderr 重定向到输出,但它也提供了一些随机字节。

最佳答案

由于您使用的 printf() 对 C++ std::string 值一无所知,因此您需要打印 内容的 C 字符串表示形式:

printf("%s", content.c_str());

printf() 函数被告知要期待它,但它不是您传递给它的内容。

或者,正如其他人指出的那样,您应该使用 native C++ I/O:

std::cout << content;

关于c++ - 在 C++ 中从 FILE 结构解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064561/

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