./hello < input.txt > output.txt
I/O Redirection in Xcode
-
Similarly to how we can redirect input and output in Terminal (described here) with
we can redirect input and output in Xcode.
Setting Working Directory
-
First, set the custom working directory for the project.
-
From the menu bar, select Product > Scheme > Edit Scheme. Then choose Run (on the left) and Options (at the top) and set the custom working directory to where your input files are located. This will make Xcode look for input files in the correct folder, instead of the directory where it stores the project’s executable.
Input Redirection
-
If you don’t want to manually type or copy and paste input into the console, you can redirect input from a file.
-
Add this line of code at the beginning of
main
to redirect input frominput.txt
tocin
(standard input stream).freopen("input.txt", "r", stdin);
Don’t forget to comment this line out before you submit!
Output Redirection
-
If you’d like to redirect output for
cout
(standard output stream) andcerr
(standard error stream) to a file, add these line of code at the beginning ofmain
:freopen("output.txt", "w", stdout); freopen("error-output.txt", "w", stderr);
Don’t forget to comment this line out before you submit!
Conditional Compilation
-
You can add a condition statement to include the lines of code that call
freopen
only if you are compiling on macOS:#ifdef __APPLE__ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); freopen("error-output.txt", "w", stderr); #endif
This way, you don’t have to worry about commenting out these lines of code before submitting.