字符串替换和奇怪的字符

时间:2012-12-05 11:49:12

标签: c++ linux string strtok

我在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 ++字符串有关,与\n有关,因为tab由^I表示,cntrl表示为^

1 个答案:

答案 0 :(得分:4)

您似乎在Windows系统上,或者数据源自Windows系统。在Windows系统上,换行实际上是两个字符:"\r\n"。您看到的^M是该换行符序列的回车符('\r')。

删除这些额外字符的一种方法是在循环中使用std::string::findstd::string::erase

另一种方法是逐个字符地手动复制到新的std::string,除非字符是'\r'