在代码中需要实现这样一个功能,需要将[00000001]这个存储在string中的字符串的中括号去掉,首先想到的就是string.erase()这个函数。结果。。。

代码:

 #include <iostream>
#include <string> using namespace std; void strSize()
{
string strTest = "[0000-0001]";
strTest.erase(strTest.size() - );
strTest.erase();
} void strLength()
{
string strTest = "[0000-0001]";
strTest.erase(strTest.length() - );
strTest.erase(); cout << strTest << endl;
} void strIterator()
{
string strTest = "[0000-0001]";
strTest.erase(strTest.begin());
strTest.erase(strTest.end() - );
} int main(int argc, char *argv)
{
strIterator(); return ;
}

这段代码中一共有三个函数进行测试,却只有一个可用,strIterator

其他两个总是会提示段错误。而且,跟踪调试发现,使用过erase后,strTest的size就变为0了。

待以后自己知识足够了再来解决。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

问题解决了:

 #include <iostream>
#include <string>
using namespace std; // 去处头部或者尾部的空白
void trimStr(string &str)
{
int nHeadPos = ;
int nTailPos = ; nHeadPos = str.find_first_not_of(' ', );
str.erase(, nHeadPos);
nTailPos = str.find_last_not_of(' ');
str.erase(nTailPos + );
} int main(int argc, char **argv)
{
string strTest = " hello ";
trimStr(strTest); return ;
}

原因是因为我把string::erase()的用法用错了。下面是它的三个重载版本

 string& erase (size_t pos = , size_t len = npos);    

 iterator erase (iterator p);

 iterator erase (iterator first, iterator last);

参考:http://www.cplusplus.com/reference/string/string/erase/

根据它的定义可以知道,第一个是删除从指定下标开始len个字符的字符串。不指定则删除到结尾。(这就是我用错的原因,我以为可以删除指定下标出的字符,当然,如果长度指定为1也是可以的。)

而通过迭代器可以,是因为第二个重载版本的存在,它的作用是删除迭代器指向的字符。

第三个是删除两个迭代器之间的字符

虽然这个错误很低级,但是通过这次的错误,也让我更加了解了这个函数的使用。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

加油吧,少年!

string.erase()--已解决的更多相关文章

  1. Cannot get a NUMERIC value from a STRING cell? 已解决

    最近在写项目中用到了excel的导入,遇到了Cannot get a NUMERIC value from a STRING cell的报错.原因是无法从纯数字的单元格用获取String的方式获取.跟 ...

  2. 已解决】Sublime中运行带input或raw_input的Python代码出错:EOFError: EOF when reading a line(转)

    [问题] 在折腾: [已解决]Sublime Text 2中运行Python程序出错:The system cannot find the file specified 的过程中,虽然解决了找不到py ...

  3. 【已解决】BeautifulSoup已经获得了Unicode的Soup但是print出来却是乱码

    [问题] 某人遇到的问题: 关于BeautifulSoup抓取表格及SAE数据库导入的问题(跪求大神帮忙) 简单说就是: 用如下代码: ? 1 2 3 4 5 6 7 import re,urllib ...

  4. 【已解决】谁动了我的CurrentPrincipal?求助我在给Artech的wcf petshop增加授权机制的时候遇到的问题。

    这个问题已解决,是绑定设置的问题,主要还是因为我自己没有深入理解WCF绑定的安全机制.在这篇博客里面我来说说怎么解决的. 下载了Artech的wcf petshop源码(博文链接)并调试运行成功后,打 ...

  5. asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

    原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.as ...

  6. 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)

      http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...

  7. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...

  8. Windows平台下在Emacs中使用plantuml中文乱码问题(已解决)

    Windows平台下在Emacs中使用plantuml中文乱码问题(已解决) */--> code {color: #FF0000} pre.src {background-color: #00 ...

  9. SpringBoot整合Swagger2案例,以及报错:java.lang.NumberFormatException: For input string: ""原因和解决办法

    原文链接:https://blog.csdn.net/weixin_43724369/article/details/89341949 SpringBoot整合Swagger2案例 先说SpringB ...

随机推荐

  1. 关于V1.6.0版本的项目总结

    10月28号,我们开了1.6项目的总结大会,包括Ting总在内,前端.后台.运维都来参加总结大会了.虽然目标基本达成,但同时也暴露出很多问题,我们希望各方能够坐下来总结一下自己或者各个相关团队的功过是 ...

  2. 网络工程师岗位基础面试题【适用于CCNA/CCNP基础】

    网络工程师岗位基础面试题[适用于CCNA/CCNP基础] 1: 交换机是如何转发数据包的?交换机通过学习数据帧中的源MAC地址生成交换机的MAC地址表,交换机查看数据帧的目标MAC地址,根据MAC地址 ...

  3. js清空子元素,创建新的子元素

    清空子元素 $('#region').empty(); 添加子元素 var regions = document.getElementById('region'); regions.appendChi ...

  4. DevExpress 中 DateEdit 控件 格式化显示和编辑的日期格式为: yyyy-MM-dd

    摘自: http://blog.sina.com.cn/s/blog_76b5256c0100zkwk.html 1需要显示的日期为2012年3月12日需要如下设置 Properties-Mask-E ...

  5. weblogic8.1 登陆5 ip 限制

    weblogic8.1  5 ip 限制 报错信息如图所示: 解决办法:此weblogic 未破解,去网上下载破解包,然后放到 copy weblogic_sp.jar to $WL_HOME/ser ...

  6. string和char*的区别以及const_cast<>()

    首先,string是类,char*属于基本数据类型 其次,const_cast只能改变指针的const属性,而不能改变或者去掉本身的const属性 测试代码: // memcpyTest.cpp : ...

  7. 能显示git分支的终端提示配置

    之前都是跟随潮流,安装zsh然后oh-my-zsh,选一个看起来顺眼的主题,一通瞎配置,很酷炫. 可是即使只有一个git插件,oh-my-zsh每次启动的时候都很慢,起码有好几秒,而且有时候zsh还会 ...

  8. eslint 错误

    是因为你使用了eslint,这个是eslint的规范报错,能不用分号就不用分号. 去掉封号就醒了. 另外,方法的()前面也要有空格,不然页报错: indentifier is not in a cam ...

  9. CocoSourcesCS 1

    CocoSourcesCS 1 /*------------------------------------------------------------------------- Compiler ...

  10. Android 如何在关于手机界面添加个图片

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...