【发布时间】:2014-11-21 13:27:30
【问题描述】:
我正在为 Crysis Wars 游戏编写一个新的服务器-客户端网络。
我有一个函数可以将字符串集中到控制台窗口中每行支持的字符数。
该窗口可容纳 113 个字符,但我已将函数中的最大字符宽度设置为 111 以很好地适应文本。
这是我的功能:
string Main::CenterText(string s)
{
return string((111 - s.length()) / 2, ' ') + s;
}
这个函数来自question I asked last year,但我不确定我是否在过去的项目中使用过它。
我正在尝试在此上下文中使用此函数(CryLogAlways 函数只是将字符串记录到游戏/服务器日志文件并打印出来):
CryLogAlways(CenterText(" ____ ____ _ __ _ _ __").c_str());
CryLogAlways(CenterText(" / _/__ / _(_)__ (_) /___ _( )| |/_/").c_str());
CryLogAlways(CenterText(" _/ // _ \\/ _/ / _ \\/ / __/ // //_> < ").c_str());
CryLogAlways(CenterText("/___/_//_/_//_/_//_/_/\\__/\\_, / /_/|_| ").c_str());
CryLogAlways(CenterText(" /___/ ").c_str());
但是输出是:
正如@deW1 所要求的,我有一个与CryLogAlways(CenterText("X").c_str()); 类似的输出:
为什么我会得到这个输出,我该如何解决这个问题?
【问题讨论】:
-
CryLogAlways(CenterText("X").c_str());的输出是什么? -
如果那是
CryString,他们已经颠倒了构造string的参数顺序:首先是值,然后是数量(而不是std::string)。字符' '是十进制的 32,对应于输出中'#'characters 的数量。 -
@cybermonkey 您的函数使用名为
string的类型作为其参数和返回类型,在此函数中,您正在构造一个string- 这里,参数的顺序很重要。 -
你能澄清一下
string到底是什么吗? -
@cybermonkey 是的,正如我们一直在说的那样:P