任何人都可以建议一种从字符串中剥离制表符("\ t")的方法吗?CString或std :: string.
例如,"1E10"变为"1E10".
谢谢你的期待.
如果要删除字符串中的所有出现,则可以使用擦除/删除习语:
#includes.erase(std::remove(s.begin(), s.end(), '\t'), s.end());
如果只想删除字符串开头和结尾处的选项卡,可以使用boost字符串算法:
#includeboost::trim(s); // removes all leading and trailing white spaces boost::trim_if(s, boost::is_any_of("\t")); // removes only tabs
如果使用Boost是太多开销,您可以使用find_first_not_of
和find_last_not_of
字符串方法滚动自己的trim函数.
std::string::size_type begin = s.find_first_not_of("\t"); std::string::size_type end = s.find_last_not_of("\t"); std::string trimmed = s.substr(begin, end-begin + 1);
hackingwords的回答让你半途而废.但是std::remove()
从
实际上并没有做任何字符串短-它只是返回一个迭代说:"新的序列将在这里结束." 你需要打电话my_string().erase()
来做到这一点:
#include#include // For std::remove() my_str.erase(std::remove(my_str.begin(), my_str.end(), '\t'), my_str.end());
该remove
算法将所有不删除的字符移到开头,覆盖已删除的字符,但不会修改容器的长度(因为它适用于迭代器,不知道底层容器).为此,请致电erase
:
str.erase(remove(str.begin(), str.end(), '\t'), str.end());