gpt4 book ai didi

C++ : String to Character Array conversion (non-Ascii characters removed)

转载 作者:行者123 更新时间:2023-11-28 02:55:16 24 4
gpt4 key购买 nike

我有一个有效负载字符串,我想将其转换为字符数组,然后从中删除任何非 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];
}

现在,这是我要转换成字符数组的字符串有效负载:

--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 终端上以 block 的形式出现(在 block 中写为 0001 等)。

当我尝试在从字符串中剥离非 ASCII 字符后打印字符 (cout << chunk1[counter1]) 时,甚至一些 ASCII 字符在 Content-Transfer-Encoding: binary.

如果我的代码有问题请指出?

最佳答案

问题是在 Linux 上 char 总是在 -128-127 范围内,所以你的 invalidChar 函数将返回 true字符不是严格的 ASCII。如果你想检查扩展 ASCII (0-255) 那么你的函数是无用的:每个 char 值都在扩展 ASCII 集中;但是,由于 char 已签名,您需要检查负值。

关于C++ : String to Character Array conversion (non-Ascii characters removed),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com