当前位置:  开发笔记 > 编程语言 > 正文

修剪/删除字符串中的选项卡("\ t")

如何解决《修剪/删除字符串中的选项卡("\t")》经验,为你挑选了3个好方法。

任何人都可以建议一种从字符串中剥离制表符("\ t")的方法吗?CString或std :: string.

例如,"1E10"变为"1E10".

谢谢你的期待.



1> Luc Touraill..:

如果要删除字符串中的所有出现,则可以使用擦除/删除习语:

#include 

s.erase(std::remove(s.begin(), s.end(), '\t'), s.end());

如果只想删除字符串开头和结尾处的选项卡,可以使用boost字符串算法:

#include 

boost::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_offind_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);



2> j_random_hac..:

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());



3> Konrad Rudol..:

remove算法将所有不删除的字符移到开头,覆盖已删除的字符,但不会修改容器的长度(因为它适用于迭代器,不知道底层容器).为此,请致电erase:

str.erase(remove(str.begin(), str.end(), '\t'), str.end());

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有