cout and cin are instantiations of the streams for input and output.
The typical use case, beyond displaying text and taking keyboard input, is to allow *NIX programs to accept input from a pipe, and send output to a file through command direction.
For example, assume a program prints out a list of values to cout called "stuff".
That Linux command (UNIX too) would send the output of the program "stuff" (where cout was used to "print" the output) to a text file named stufflist.txt. This is i/o redirection at the command line.
Next, consider an application which takes input as a list of file names, then sorts them and prints that same list in sorted order. Say the application that does this is called "sortnames".
ls | sortnames > namelist.txt
|
The Linux command "ls", which lists the files in the local directory, is piped with the "|" character as input to the sortnames program (assumed to be in the path). "sortnames" takes the input using cin. It sorts, the sends the output using cout. In this command line sample, that output is then stored in the file namelist.txt
That is the real common usage intent of the original "devices' stdin and stdout (which are wired to cin and cout respectively). The point being that "cin" and "cout" are not exclusively about text you see or keyboard input you provide. It's about standard input and standard output devices stdin and stdout, defined by the operating system (a standard that existed long before C++ was invented).
Now, what actually does "gotoxy" do?
It sends a short sequence of characters in a format which places the cursor. It may look like:
This is a "fake" simplified example. Here, (27) means "byte 27", or the "escape" character, which indicates to the "terminal" that a command follows. The "=" was common as the "goto" command, but many others were used depending on brand and model. The next two characters encoded the X and Y position to place the cursor.
Think about that a moment. All that gotoxy does is send a few special control characters which represents a location. The exact format differs by terminal model/brand (or PC emulation of this notion).
A language like C++ just doesn't have reason to address something like that. It never rose to the occasion as important for the language to define such a thing, because it is otherwise so easily handled by a function.
Further, this has no place in a text file, which is the presumed target of a redirected "cout" output. I know, we spend a lot of time trying to format output for viewing on a display or text to a printer, but the original UNIX concept was to use the standard input and standard output devices as a way of connecting the output of one program as the input to another, chaining them for more complex operations at the command line.
Gotoxy and related features have no place in such a context.
Similarly, clear screen, setting colors...all have related command forms which are nothing more than sending a few special characters the terminal "understands".
When designing standards for a language like C++, this is not a "language" level concept. It's a library level concept, and not one C++ was ever considered to assume responsibility for (since that had already been addressed by the "curses" library in *NIX long before).