调试断言性病失败::抹去
问题描述:
我正在写一个程序来解析日志文件,并决定要为C++有关越好,我被击中了与调试断言这条线 -调试断言性病失败::抹去
sLine.erase(remove_if(sLine.begin(), sLine.end(), isspace), sLine.end());
这似乎是因为值为-80的字符在日志文件的第2000行。
所以,我想这
sLine.erase(remove_if(sLine.begin(), sLine.end(), [](char c) { return c >= -1 && c<=255; }), sLine.end());
但是这个代码片断被卡住,没有解释。
所以,最后我有三个问题 -
- 这是为什么调试断言是必需的?
- 第二个代码段失败的原因是什么?
- 您可以提出任何解决方法吗?
感谢您的帮助!
答
- 这是一个声明来测试字符参数是否超出范围。字符'°'(-80)不是一个ascii字符,因此它超出范围。
- 我不确定你的意思,这个代码片段删除所有ascii字符。
-
下面的代码将工作,如果你只是想删除空格字符
sLine.erase(标准::的remove_if(sLine.begin(),sLine.end(),[](字符C){ return(c ==''); }),sLine.end());
2.噢,是的,我应该扭转这些迹象。我愚蠢。来自“简明英汉词典”工作正常,这个断言是由isspace引发的,而不是标准库,正如我想的那样。谢谢! –