【发布时间】:2014-11-22 19:52:42
【问题描述】:
我使用了我在this question 中找到的一个函数,它适用于用“%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;
}
但是,当我尝试将它用于Local Live Test Server 等字符串时,输出是这样的:
我的最后一个问题涉及string 问题,发现string 是typedefed 指向我正在使用的游戏SDK (CryEngine2) 中的内部CryString 类型。我现在使用std::string 来解决这个问题。
这个问题也反映在我使用的数据库中,发生这种转换并将数据发送到数据库后:
为什么我不能以这种方式使用%20(可能还有其他 URL 编码符号),我怎样才能让它工作?
我试图对此进行一些研究以自己解决此问题,但没有发现任何相关问题。
我尝试使用*it = (char)"%20"; 代替*it = (char)"%20";,但这实际上删除了出现在字符串中的0,而不是用%20 替换空格。
【问题讨论】:
-
您需要
"%20"(三个字符),而不是'%20'(一个字符)。而且由于它的长度与" "的长度不匹配,所以简单地替换你现在正在做的类型是行不通的。 -
请修正您的问题(和标题)以明确您是在谈论“%20”还是“20%”,您一直在它们之间切换。
-
@JonathanWakely 已修复。我不做太多网络编程,这表明!
-
“我使用 HTML POST 方法通过 PHP 脚本将游戏服务器的信息获取到数据库,因此变量中的任何空格都必须替换为 %20。” 等等……什么?!
-
@LightnessRacesinOrbit 已编辑。
标签: c++ string sfml url-encoding crysis