标签: crysis

控制台输出中出现意外的字符

我正在为Crysis Wars游戏编写一个新的服务器 - 客户端网络.我有一个函数将字符串居中到控制台窗口中每行支持的字符数.该窗口适合113个字符,但我已将函数中的最大字符宽度设置111为适合文本.

这是我的功能:

string Main::CenterText(string s)
{
    return string((111 - s.length()) / 2, ' ') + s; 
}
Run Code Online (Sandbox Code Playgroud)

这个功能来自我去年提出的一个问题,但我不确定我是否最终在过去的项目中使用它.

我试图在此上下文中使用此函数(该CryLogAlways函数只是将字符串记录到游戏/服务器日志文件并打印它):

CryLogAlways(CenterText("   ____     ____      _ __      _  _  __").c_str());
CryLogAlways(CenterText("  /  _/__  / _(_)__  (_) /___ _( )| |/_/").c_str());
CryLogAlways(CenterText(" _/ // _ \\/ _/ / _ \\/ / __/ // //_>  <  ").c_str());
CryLogAlways(CenterText("/___/_//_/_//_/_//_/_/\\__/\\_, / /_/|_|  ").c_str());
CryLogAlways(CenterText("                         /___/          ").c_str());
Run Code Online (Sandbox Code Playgroud)

但输出是:

在此输入图像描述

同样,@ deW1请求,我有一个类似的输出CryLogAlways(CenterText("X").c_str());:

在此输入图像描述

为什么我得到这个输出,我该如何解决这个问题?

c++ string c++03 crysis

4
推荐指数
1
解决办法
377
查看次数

为什么我不能在字符串中使用"%20"?

我使用了一个我在这个问题中找到的函数,适用于用"%20"替换所有空格(可能会更有效地完成!):

## Heading ##std::string Main::SpacesForWeb(std::string text) {
    for (std::string::iterator it = text.begin(); it != text.end(); ++it) {
        if (*it == ' ') {
            *it = '%20';
        }
    }
    return text;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将它用于字符串时Local Live Test Server,输出是这样的:

在此输入图像描述

我的最后一个问题涉及string的问题,并发现stringtypedef编为指向内部CryString在游戏SDK类型我使用(Cryengine2引擎).我现在正在使用std::string以解决这个问题.

此问题也反映在我转换发生后使用的数据库中,并将数据发送到数据库:

在此输入图像描述

为什么我不能%20以这种方式使用(也许还有其他URL编码符号),我怎样才能使它工作?我试图对此进行一些研究以便自己解决这个问题,但是没有任何相关内容出现.

我已尝试使用*it = (char)"%20";原位*it = (char)"%20";,但是这实际上删除了0出现在字符串中而不是替换空格%20.

c++ string url-encoding sfml crysis

-3
推荐指数
2
解决办法
1159
查看次数

标签 统计

c++ ×2

crysis ×2

string ×2

c++03 ×1

sfml ×1

url-encoding ×1