我有一個字符串中有一些二進制數據。這是xml格式的字符串,所以在我要處理它之前,我需要以base64格式轉換二進制數據。 我正在使用一個稱爲findXMLTag的函數,它將查找包含它的xml標記的數據的開始位置和結束位置。 現在我可以將該數據轉換爲base64,但我在用新的base64數據替換舊的二進制數據時遇到問題。替換字符串的二進制部分?
問題是我不能使用任何類型的字符串,因爲當它找到一個空字符時,它會認爲它是字符串的終點,但事實上,因爲我有二進制數據存儲在字符串中, char可以是我的二進制數據的一部分。
所以我想我正在尋找某種二進制替換,我無法弄清楚如何使它工作。 在此先感謝您提供任何幫助。
這是我用來定位數據在xml字符串中的開始和結束的代碼。
std::vector<TForm1::Pair> TForm1::findXMLTag(char *XMLString, char* XMLTag, int XMLSize)
{
void *found = XMLString;
int XMLTagLen = strlen(XMLTag);
std::vector<TForm1::Pair> result;
TForm1::Pair pair;
AnsiString XMLTagEnd = "</";
XMLTagEnd += &XMLTag[1];
while(found = memmem(XMLString, XMLSize - ((char*)found - XMLString), XMLTag, XMLTagLen))
{
if(found == NULL)
return result;
found = (char*)found + XMLTagLen;
pair.start = int((char*)found - XMLString);
found = memmem(found, XMLSize - ((char*)found - XMLString), XMLTagEnd.c_str(), XMLTagEnd.Length());
pair.end = int((char*)found - XMLString);
found = (char*)found + XMLTagEnd.Length();
result.push_back(pair);
}
return result;
}
只需使用'vector'。 –
paddy
在理解這段代碼的作用和問題是什麼時遇到了一些麻煩。我認爲你正在試圖用base64字符串就地替換二進制數據,但是在所示的代碼中我沒有看到它。 –
另外二進制數據在std :: string下也能正常工作。 –