QString outputBuffer;
// 创建一个内存缓冲区,用于重定向stdout
char buffer[4096]; // 假设缓冲区大小为4096字节
memset(buffer, 0, sizeof(buffer)); // 清空缓冲区
// 将stdout重定向到内存缓冲区
setvbuf(stdout, buffer, _IOFBF, sizeof(buffer));
fprintf(stdout, "添加一个用于被删除的定时器\n");
outputBuffer = QString::fromUtf8(buffer);
下面为第二种方法
FILE *outputFile = fopen("output.txt", "a");
if (!outputFile) {
qDebug() << "Failed to open output file.";
return 1;
}
// 保存原始 stdout 指针
FILE *originalStdout = stdout;
// 将标准输出流重定向到文件
stdout = outputFile;
printf("123");
// 刷新输出缓冲区,确保内容写入到文件中
fflush(stdout);
// 将 stdout 重定向回原始设备
stdout = originalStdout;
fclose(outputFile);
// 使用 QFile 打开文件进行读取
QFile fileread("output.txt");
if (!fileread.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Failed to open file for reading.";
return 1;
}
// 使用 QTextStream 来读取文件内容
QTextStream in(&fileread);
QString fileContent = in.readAll(); // 读取整个文件内容到 QString
// 关闭 QFile
fileread.close();
return 0;