Unexpected characters in console output
c++, c++03, crysis, string
Solution
You're using the type `string` unqualified. I was assuming you have `using namespace std` somewhere (against best practice), which would make `string` refer to `std::string`. But apparently that is not the case, and you have the non-qualified name `string` defined to something (the question doesn't show what), which behaves similarly to a `std::string` (i.e. it has `.length()` and `.c_str()`). However, the constructor arguments of this something seem to be in reversed order to those of `std::string`.
If you want your function to work with standard library strings, say so eplicitly:
std::string Main::CenterText(std::string s)
{
return std::string((111 - s.length()) / 2, ' ') + s;
}
This is a prime example of why it's an extremely good idea to use explicit qualification for `std` types.
Problem
I am programming a new server-client network for the game Crysis Wars. I have a function that centers a string to the amount of characters supported per-line in the console window. The window fits 113 characters, but I have set the maximum character width in my function to `111` as to fit text nicely. This is my function: ``` string Main::CenterText(string s) { return string((111 - s.length()) / 2, ' ') + s; } ``` This function is from a question I asked last year, but I however am not sure whether I ended up using it or not in past projects. I am attempting to use this function in this context (the `CryLogAlways` function simply logs the string to the game/server logfile and prints it): ``` CryLogAlways(CenterText(" ____ ____ _ __ _ _ __").c_str()); CryLogAlways(CenterText(" / _/__ / _(_)__ (_) /___ _( )| |/_/").c_str()); CryLogAlways(CenterText(" _/ // _ \\/ _/ / _ \\/ / __/ // //_> < ").c_str()); CryLogAlways(CenterText("/___/_//_/_//_/_//_/_/\\__/\\_, / /_/|_| ").c_str()); CryLogAlways(CenterText(" /___/ ").c_str()); ``` However the output is: Likewise as @deW1 requested, I have a similar output with `CryLogAlways(CenterText("X").c_str());`: Why am I getting this output, and how can I fix this?