【发布时间】:2023-03-30 19:55:01
【问题描述】:
我有一个有效负载字符串,我想将其转换为字符数组,然后从中删除任何非 ASCII 字符。这是我的代码:
bool invalidChar (char c)
{
return !(c>=0 && c <256);
}
void stripUnicode(string &str)
{
str.erase(remove_if(str.begin(),str.end(), invalidChar), str.end());
}
Payload_input 是一个由 ascii 和非 ascii 字符组成的字符串:
stripUnicode(Payload_input) ;
char input[Payload_input.length()];
strcpy(input,Payload_input.c_str());
char chunk1[Payload_input.length()];
int counter1=0;
for(counter1=0; counter1< size; counter1++)
{
chunk1[counter1]=input[counter1];
}
现在,这是我要转换为 char 数组的字符串有效负载:
--90B452BFFF3F395ABDC878D8BEDBD152
Content-Disposition: form-data; name="uploaddir"
language/2BB5B9330E/C/
--90B452BFFF3F395ABDC878D8BEDBD152
Content-Disposition: form-data; name="filename"; filename="lottery[1]20110727082525.jpg"
Content-Type: text/plain
Content-Transfer-Encoding: binary
JFIFddDucky<http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
在上面的字符串中,Content-Transfer-Encoding: binary之后的几个字符出现在linux终端上的块中(在块内写为0001等)。
当我在从字符串中剥离非 ASCII 字符后尝试打印字符 (cout Content-Transfer-Encoding: binary 行之后甚至会省略一些 ASCII 字符>.
如果我的代码有问题,请指出?
【问题讨论】:
-
只是一个小想法:ASCII 使用 7 位。也许你的 char 应该在 0
-
我想满足所有扩展的 ASCII 字符。
标签: c++