重定向C ++流

时间:2011-02-20 17:10:21

标签: c++ stream redirect

我有一个方法搜索,我想提供输入流,然后将输出放在输出流上。

void search(std::istream & is, std::ostream & os);

现在我想用cin / cout做这件事。从命令提示符:

a.out < input_file.txt

在main中,我尝试将cin / cout传递给search()方法。

X.search(std::cin, std::cout);

编译和链接时出现以下错误(XCode):

Line Location Tool:0: collect2: ld returned 1 exit status
Line Location Tool:0: symbol(s) not found
Line Location Tool:0: _main in main.o
Line Location Tool:0: "X::search(std::basic_istream<char, std::char_traits<char> >&,
   std::basic_ostream<char, std::char_traits<char> >&)", referenced from:

我需要为cin / cout做些什么吗?我无法弄清楚如何解决这个错误。

2 个答案:

答案 0 :(得分:2)

这在xcode(c ++ cmdline新项目向导)中编译并运行正常,看起来你错过了#include&lt; iostream&gt;或者主要的,或者是X类的定义。

#include <iostream>

void foo( std::istream &is, std::ostream &os )
{
    std::string s;
    while ( getline( is, s, '\n' ) )
    {
        os << s;
    }
}

int main (int argc, char * const argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    foo( std::cin, std::cout );

    return 0;
}

答案 1 :(得分:0)

我不相信你的问题与std :: cin / std :: cout。

有关

很难从给出的信息中猜出,但我认为问题在于搜索功能的定义没有被编译/链接到您的可执行文件中。你可以包含更多的编译器输出吗?