如何让C++程序在新打开的Ubuntu终端中输出内容?
让C++程序输出内容到新打开的终端
你的代码里system("gnome-terminal")只是单独打开一个新终端窗口,和当前C++程序的输出流(std::cout)完全无关,所以std::cout的内容只会输出到程序启动时的原终端。
给你两个简单的实现方法:
方法1:直接让新终端执行输出命令
修改system的参数,让gnome-terminal启动bash并执行输出命令,同时添加read防止终端一闪而过:
#include <stdlib.h> int main(){ // 打开新终端并输出"something",等待用户按回车再关闭 system("gnome-terminal -- bash -c 'echo something; read'"); return 0; }
方法2:输出程序中动态生成的内容
如果要输出程序里的变量或动态内容,可以拼接命令字符串:
#include <stdlib.h> #include <string> int main(){ std::string output_content = "这是我程序里生成的内容"; // 拼接命令,注意转义双引号 std::string cmd = "gnome-terminal -- bash -c 'echo \"" + output_content + "\"; read'"; system(cmd.c_str()); return 0; }
关键说明
gnome-terminal -- bash -c '命令':让新终端启动bash解释器,执行单引号里的命令read:让终端等待用户输入任意字符再关闭,这样你能看到输出内容;如果不需要停留,可以去掉; read
内容的提问来源于stack exchange,提问作者Un_known_user
相关产品推荐
相关产品推荐

