gpt4 book ai didi

C++:在两个程序中使用宽字符串时无法通过管道获取数据

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:31 26 4
gpt4 key购买 nike

我正在尝试在 Mac OS X Snow Leopard 上使用以下 C++ 代码通过管道获取外部程序的输出。

FILE * al = popen("program program.cfg", "r");

string data;
char buffer[100];
while (fgets(buffer, 100, al) != NULL)
data.append(buffer);
cout << "«" << data << "»" << endl;

pclose(al);

但是,没有数据被打印出来。我怀疑问题在于外部程序输出到wcoutwclog,但我不确定如何处理。我还尝试使用 wstringfgetws,但这也没有帮助。

我阅读了有关使用 boost::iostreams 的文章,但再次失败:

FILE * al = popen("program program.cfg", "r");
boost::iostreams::file_descriptor_source alDesc(fileno(al));
boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_source> alStream(alDesc);
istream align(&alStream);

string alignOutput;
while (align) {
getline(align, alignOutput);
cout << "«" << alignOutput << "»" << endl;
}
align >> alignOutput;
alStream.close();
alDesc.close();

pclose(al);

有没有人知道实际问题可能是什么以及如何解决?以防有人问,外部程序和从管道读取的程序都需要使用 wstring,因为我正在处理可能使用任何语言的数据,包括中文等。

提前感谢您提供任何线索!

最佳答案

原来是我覆盖了外部程序用于输入的文件,所以它没有给出任何输出......

尽管如此,将上述代码片段放在一个地方还是很不错的,因为解读 Boost 文档并不简单。

关于C++:在两个程序中使用宽字符串时无法通过管道获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598401/

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