2012-12-05 68 views
1

我有一個char*中的HTML數據,我想逐行得到它,做一些替換,然後將它們一起添加到一個字符串中。這是代碼,我使用字符串替換和奇怪的字符

std::string to, finalData; 
finalData = ""; 
char* char_array = strtok(data, "\n"); 
while(char_array){ 
    finalData += std::string(char_array); 
    char_array = strtok(NULL, "\n"); 
} 

的問題是,我在這(finalData)最終獲得的數據有很多^M人物,我無法尋找它,因爲它有一個特殊字符。有什麼方法可以完全消除角色? 我猜測它是與轉換從C數組C++字符串和標籤由^I代表和CNTRL表示與\n做,因爲^

回答

4

看來你是在Windows系統上,或數據來源於Windows系統。在Windows系統上,換行符實際上是兩個字符:"\r\n"。你所看到的^M是該換行符的回車符('\r')。

刪除這些額外字符的一種方法是在循環中使用std::string::findstd::string::erase

另一種方法是將字符逐個字符手動複製到新的std::string,除非字符爲'\r'

+0

我使用的是Linux系統,初始數據是網頁的html源代碼。 –

+0

@PrasanthMadhavan是的,許多互聯網協議也使用'「\ r \ n」'結尾序列。無論如何,我已經添加了兩種刪除不需要的回車符的方法。 –

+0

有幫助。我將代碼中的'\ n'更改爲'\ r \ n',它工作正常。 –