Перенаправление потоков C ++ - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть метод поиска, который я хочу передать потоку ввода и затем поместить вывод в поток вывода.

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

Пока я хотел бы сделать это с помощью cin / cout. Из командной строки:

a.out < input_file.txt

В основном я пытаюсь сделать это, передавая 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 ]

2 голосов
/ 20 февраля 2011

Это компилируется и отлично работает для меня в xcode (c ++ cmdline новый проект мастера), похоже, что вам не хватает #include или main, или определение вашего класса 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;
}
0 голосов
/ 20 февраля 2011

Я не верю, что ваша проблема связана с std :: cin / std :: cout.

Трудно догадаться по приведенной информации, но я думаю, что проблема в том, что определение функции поискане компилируется / не ссылается на ваш исполняемый файл.Есть ли еще что-нибудь, что вы можете включить в компилятор?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...