我想从命令行填写vector<float>
:
more my.txt | myexe.x > result.txt
在C ++中打开管道的最佳方法是什么? 谢谢 阿尔曼。
答案 0 :(得分:10)
您的shell会将more
的标准输出连接到myexe.x
的标准输入。因此,您只需阅读std::cin
,无需担心输入是来自键盘还是来自其他程序。
例如:
vector<float> myVec;
copy(istream_iterator<float>(cin), istream_iterator<float>(),
back_inserter(myVec));
答案 1 :(得分:4)
您可以使用std::copy()
中的<algorithm>
执行此操作,但不需要额外的依赖项。
#include<iterator>
// ...
std::vector<float> them_numbers(std::istream_iterator<float>(std::cin),
std::istream_iterator<float>());
如果您事先知道您期望的确切数量,那么您可以避免重新分配:
std::vector<float>::size_type all_of_them /* = ... */;
std::vector<float> them_numbers(all_of_them);
them_numbers.assign(std::istream_iterator<float>(std::cin),
std::istream_iterator<float>());
答案 2 :(得分:2)
该特定管道已附加到您应用的标准输入,因此您可以从那里阅读。