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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With