2011-05-30 53 views
0

這是我的函數調用:查找/替換字符數組指向C++中的字符指針

removeTags(*buf, bufSize); 

的呼叫:

void removeTags(char* dataBlock, unsigned long size) 
{ 
    char* start = dataBlock; 
    char* end = dataBlock + size; 

    while(start < end) 
    { 
    //How do I replace the characters "\abc" with just nothing, ''. 
     } 

我想替換字符\ ABC的任何實例一無所有。

回答

2

一旦你找到的\abc實例只需移動後的所有字符的\abc向後四個地方(4因爲\abc爲四個字符長)(可能使用memmove)。

例如:

one two \abc three 
     <----^ copy everything from the 't' down backwards over the \abc 

注意,以後你這樣做,你的end指針將是無效的,所以你必須更新它。

在另一個字符串中查找字符串的位置可以用strstr代替const char* s或std::string::find代替std::string s。當然,如果您使用std::string,那麼您可以使用std::string::replace

+0

將指針的內存內容=設置爲一個字符串,只是將字符串替換爲:string xyz = * buf;無論如何,buf指針會輸出到下一行中的文件。此應用程序將舊電子書格式轉換爲RTF文件。我不明白指針是否足以執行此搜索和替換。似乎工作正常轉換爲字符串。 – 2011-05-30 22:31:19

0

通過將所有下列字符向下移動來刪除不需要的字符。

您應該可以通過使用from_pointer和to_pointer一次完成此操作,並將from_pointer中的當前位置複製到to_pointer或增加from_pointer以跳過您要省略的字符。

0

如果這不是家庭作業,您可以使用Boost庫中的regex_replace