Я пытаюсь записать консольные данные в отдельный текстовый файл в cpp. Кто-либо помогает мне с примером кода.
Есть разные способы сделать это. Вы можете перенаправить его из командной строки с помощью programname> out.txt
. Или вы можете использовать freopen ("out.txt", "w", stdout);
в начале вашей программы.
Если вы хотите писать из своего процесса, я бы предложил простой метод print
void print(const string str, ostream & output)
{
output << str;
}
Затем вы можете вызвать
print("Print this", cout);
для консольного вывода, или
ofstream filestream("filename.out");
print("Print this", filestream);
для записи в файл "filename.out". Конечно, больше всего вы выиграете, если print
будет методом класса, который выводит всю необходимую вам специфическую информацию об объекте, и таким образом вы сможете легко направлять вывод в различные потоки.
bbtrb написал:
void print (const string str, ostream & вывод) { output << str; }
Лучше, чем это, конечно
ostream& output(ostream& out, string str) {out << str; return out;}
, так что вы можете даже получить управляемый выходной поток, возвращаемый функцией.
ответ smerrimans должен вам помочь.
Существует также возможность реализовать собственный streambuf и использовать его с std :: cout и std :: cerr для сохранения распечаток в файл вместо вывода на консоль. Я сделал это некоторое время назад, чтобы перенаправить распечатки во вращающиеся журналы с отметками времени.
Вам нужно будет немного прочитать о том, как это работает, и эта книга помогла мне понять это правильно.
Если это не то, что вам нужно, это немного перебор.