You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C/C++如何通过命令行传递标准输入(非命令行参数)

解决方案

完全可以实现,无需修改现有C++代码,也不需要写入本地临时文件,利用Shell标准输入重定向和管道特性即可完成需求。

方案1:直接传入固定测试输入

如果要传入你示例中的固定输入内容,可以直接使用Here文档特性,命令如下:

g++ -std=c++17 -O2 -lm b.cpp && ./a.out << 'EOF'
7
1 2 
2 4 
2 6
7 5
3 6
4 6
7 2
EOF

Here文档会将两个EOF之间的内容直接传递给程序的标准输入,全程无磁盘写入操作。

方案2:拉取远程HTTP服务器输入直接传递

如果输入存储在远程HTTP服务器,使用curl拉取内容后通过管道直接传递给程序即可,命令如下:

g++ -std=c++17 -O2 -lm b.cpp && curl -s http://你的远程服务器地址/输入文件路径 | ./a.out

其中-s参数用于开启curl静默模式,避免输出进度、报错等多余内容干扰输入数据。管道会将curl拉取到的输入内容直接在内存中传递给C++程序的标准输入,cin可以正常读取内容,完全符合你提出的限制条件。

完整Shell自动化脚本示例

#!/bin/bash
# 编译C++代码
g++ -std=c++17 -O2 -lm b.cpp
# 判断编译是否成功
if [ $? -ne 0 ]; then
    echo "代码编译失败,退出执行"
    exit 1
fi
# 拉取远程输入并执行程序
curl -s "http://替换为你的远程输入文件地址" | ./a.out

脚本编写完成后添加执行权限chmod +x run.sh即可直接运行实现自动化。

内容的提问来源于stack exchange,提问作者VJZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 05:54:05