【发布时间】:2017-08-28 09:14:02
【问题描述】:
以下示例输出来自stdin 的输入:
#include <iostream>
int main(int argc, char **argv)
{
std::string s1, s2;
while (getline(std::cin, s1))
{
std::cout << s1 << " 1\n";
}
while (getline(std::cin, s2))
{
std::cout << s2 << "2\n";
}
return 0;
}
我这样运行程序:cat main.cpp | ./main 输出
#include <iostream> 1
1
int main(int argc, char **argv) 1
{ 1
1
std::string s1, s2; 1
while (getline(std::cin, s1)) 1
{ 1
std::cout << s1 << " 1\n"; 1
} 1
1
while (getline(std::cin, s2)) 1
{ 1
std::cout << s2 << "2\n"; 1
} 1
} 1
有没有办法通过stdin 将两个单独的输入通过管道传输到程序?也就是说,如果我写类似cat main.cpp cat main.cpp | ./main 的东西,那么第一个输入将分配给s1,第二个输入分配给s2?
【问题讨论】:
-
不,这是不可能的。不是直接的任何方式。可以将输入以您想要的方式拼接到一个文件中,然后将该单个文件作为输入传递给程序。
-
为什么不把这两个文件作为参数放到你的程序中呢?并从 2 个 ifstream 流而不是 cin 中读取? ./main main.cpp main.cpp
标签: c++ pipe user-input stdin