我有一个程序,它将实验计数作为命令字符串参数,并输出浮点数序列。 例: im_7.exe 10 10.41 13.33 8.806 14.95 15.55 13.88 10.13 12.22 9.09 10.45
所以,我需要在我的程序中调用这个程序并分析这个数字序列。
答案 0 :(得分:4)
一个程序打印到标准输出(C ++中为std::cout
)的数据可以通过管道传输到另一个程序的标准输入(std::cin
)。两个程序如何连接的细节取决于环境(特别是操作系统和shell)。
答案 1 :(得分:4)
如果您在Windows上,那么您需要执行以下操作
对于样本,请查看以下链接。 http://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx
希望这就是你要找的东西。
答案 2 :(得分:3)
您可以创建一个包含数据的类(>>
和<<
重载)
include <iostream>
#include <iterator>
#include <vector>
class MyData
{
public:
friend
std::istream&
operator>>(std::istream& in, MyData& data)
{
in >> data.size ;
data.m_data.resize(data.size);
std::copy(
std::istream_iterator<float>(in),
std::istream_iterator<float>( ),
data.m_data.begin()
);
}
friend
std::ostream&
operator<<(std::ostream& out, MyData& data)
{
out<< data.size << " ";
for(size_t i=0;i<data.size;++i){
out<< data.m_data[i] <<" ";
}
return out;
}
private:
int size;
std::vector<float> m_data;
};
然后你就可以这样称呼它
int
main (int ac, char **av)
{
MyData d;
std::cin>>d; //input one set of data;
//test
std::cout<<d;
//get multiple data files
std::vector<MyData> buffer;
std::copy(
std::istream_iterator<MyData>(std::cin),
std::istream_iterator<MyData>( ),
std::back_inserter(buffer)); // copies all data into buffer
}
在Linux上,测试管道可以这样形成:
echo "4 1.1 2.2 3.3 4.4" | ./a.out
不确定如何在Windows上进行管道...