You may be running into a problem with your environment. You don't say what platform/environment you are running in, but take the following program:
#include <iostream>
#include <cstdlib>
int main()
{
std::cout << u8"Chào thế giới!" << std::endl;
return EXIT_SUCCESS;
}
This yields the following output from iTerm on Mac OS X:
Chào thế giới!
With other (non-unicode) environments, using the same code, you may get UTF-8 characters interpreted as ASCII on output. I don't know what the Windows command line will yield, but if you are using an IDE, your IDE may or may not render UTF-8, independently of whether your shell does or doesn't.
Here's a web example.
https://code.sololearn.com/c39N9RN6b4Md/#cpp yields:
Chào thế giới!
But http://ideone.com/OkkUZs running exactly the same code yields:
Chào thế giới!
It's probably also worth pointing out that in C++ to properly process UTF-8 strings, count "characters", ensure your strings are valid UTF-8, etc. you will likely want to use a Unicode library--working with Unicode is non-trivial.
Personally, I have found both UTFCPP and TinyUTF8 to be excellent libraries - reasonably small, simple and effective.
Hope that helps.