Запись всех выходных данных программы в txt-файл на C++
мне нужно записать все мои выходные данные программы в текстовый файл. Я считаю, что это делается таким образом,
sOutFile << stdout;
где sOutFile-объект ofstream, который создает файл следующим образом:
sOutFile("CreateAFile.txt" ); // CreateAFile.txt is created.
когда я вставляю stdout в объект sOutFile, я получаю некоторый код, который, кажется, напоминает восьмеричной [шестнадцатеричный] код или какой-либо адрес в текстовом файле, который я создал.
0x77c5fca0
но что меня смущает, так это то, что в моей программе я использую Каут несколько раз. В основном просто буквальное утверждение. Если я не ошибаюсь, это вывод программы.
Если этот код является адресом, будет ли он содержать все мои выходные данные? Могу ли я прочитать его обратно в программу и узнать таким образом?
что я могу сделать, чтобы получить все мои выходные данные программы, записанные в текстовый файл?
5 ответов
это дубликат: этот вопрос
вы можете перенаправить stdout, stderr и stdin с помощью std::freopen
.
из приведенной выше ссылки:
/* freopen example: redirecting stdout */
#include <stdio.h>
int main ()
{
freopen ("myfile.txt","w",stdout);
printf ("This sentence is redirected to a file.");
fclose (stdout);
return 0;
}
вы также можете запустить свою программу через командную строку, например:
a.exe > stdout.txt 2> stderr.txt
Если ваша программа уже использует cout / printf, и вы хотите отправить все, что вы в настоящее время выводите в файл, вы можете просто перенаправить stdout, чтобы указать на файл перед существующими вызовами: http://support.microsoft.com/kb/58667
Соответствующий Код:
freopen( "file.txt", "w", stdout );
cout << "hello file world\n"; // goes to file.txt
freopen("CON", "w", stdout);
printf("Hello again, console\n"); // redirected back to the console
кроме того, если вы просто хотите, чтобы некоторые вещи были напечатаны в файл, вам просто нужен обычный поток вывода файла: http://www.cplusplus.com/doc/tutorial/files.html
Соответствующий Код:
ofstream myfile;
myfile.open("file.txt");
myfile << "Hello file world.\n";
printf("Hello console.\n");
myfile.close();
редактировать для агрегирования ответов от Джона Т и Брайана Бонди:
Наконец, если вы запускаете его из командной строки, вы можете просто перенаправить вывод, как и все остальные, используя оператор перенаправления ">" или добавить ">>":
myProg > stdout.txt 2> stderr.txt
Если вы хотите, чтобы все выходные данные были в текстовом файле, вам не нужно ничего кодировать.
из командной строки:
program > output.txt
Если вы хотите только перенаправить определенный вывод, вы можете использовать ostream, как dirkgently предложил.
тогда вы не можете использовать std::cout в другом месте для печати материалов из вашей программы. Измените std:: cout на std:: ostream, а затем передайте свой файл или std:: cout по мере необходимости.
sOutFile << stdout;
в C "stdout
" определяется как FILE*
переменной. Это просто указатель. Outputing его в файл просто записывает значение указателя, в вашем случае:0x77c5fca0
в файл.
если вы хотите направить вывод в файл или записать его в файл или перенаправить вывод программы в файл с помощью командной строки.