我有一个方法搜索,我想提供输入流,然后将输出放在输出流上。
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做些什么吗?我无法弄清楚如何解决这个错误。
答案 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。
有关很难从给出的信息中猜出,但我认为问题在于搜索功能的定义没有被编译/链接到您的可执行文件中。你可以包含更多的编译器输出吗?