簡體   English   中英

C ++:String to Character Array轉換(刪除非Ascii字符)

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

我有一個有效負載字符串,我想將其轉換為字符數組,然后從中刪除任何非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終端上的塊中(在bloack中它被寫成0001等)。

當我從字符串中剝離非ASCII字符串后嘗試打印字符(cout << chunk1 [counter1])時,甚至一些ASCII字符在行Content-Transfer-Encoding:binary之后被省略。

如果我的代碼有問題,請指出它?

問題是在Linux上char始終在-128-127范圍內,因此對於所有字符而言, invalidChar函數將返回true ,而不是嚴格的ASCII。 如果要檢查擴展ASCII(0-255),那么您的函數是無用的:每個char值都在擴展的ASCII集中; 但是,由於char已簽名,您需要檢查負值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM