c++ string类的, 后的空字符无法消除

#include
#include
#include
using namespace std;
bool R1(string s);
int main()
{
string s1;
while(getline(cin,s1)&&s1 !="q")
{
if(R1(s1))
cout<<s1<<"是回文.\n";
else
cout<<s1<<"不是回文.\n";
cout<<"请输入下一个字符串,输入q将退出\n";
}
return 0;
}
bool R1(string s)
{
string::iterator it;
for(it=s.begin();it!=s.end();++it)
{
*it=tolower(*it);
if(!isalnum(*it))
{s.erase(it);
}
}
cout<<s<<endl;
string val(s.rbegin(),s.rend());
if(val==s)
return true;
else
return false;
}

图片说明

c++
0

3个回答

你在for(it=s.begin();it!=s.end();it++)循环内部调用it.erase(it)会使迭代器失效的。
it指向逗号时erase,则之后it指向了空格,此时循环结束it++,就到了空格的下一字符,因此空格就去不掉

1
2
2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++ string类的, 后的空字符无法消除
#include n#include n#include nusing namespace std;nbool R1(string s);nint main()nn string s1;n while(getline(cin,s1)&&s1 !="q")n n if(R1(s1))n cout<
关于string类对象不是以空字符标记字符串末尾的探究
关于string类对象不是以空字符标记字符串末尾的探究
String类的trim()方法之不能消除的空格
在后台数据统计清洗中,我们时常会遇到针对字符串的修改的问题,其中比较常见的就是消除字符串中的空格。这里笔者要阐述的不是如何消除字符串中出现的空格,而是在消除字符串中遇到的问题:有些空格不能使用trim()消除掉。 这个问题出现的原因在于trim()函数只能消除半角空格,而不能消除全角空格。如果输入的空格是全角空格,那么后台使用trim()是不能清除的。 要想消除全角空格,就必须先将全角空格...
删除空字符串
String.prototype.trim= function()  {    return this.replace(/(^\s*)|(\s*$)/g, &quot;&quot;);  } 使用方法 document.getElementById(&quot;myName&quot;).value.trim()
含有空字符0的char 字符串给string赋值
这几天在用Thrift 传输一个文件时,发现此问题,特mark;  原本char字符串给string赋值,都是用  string  str = string(charBuf),但如果charBuf 含有空字符,那么赋值后字符串会被0截断,查了下string 的构造函数string(const char * s):  1.string(const char * s)  说明:将string对象
c++去除空格并且放到字符串数组中
int trim(string &s) { if (s.empty()) { return 0; } s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); return 0; } int main(){
处理中间含有空字符‘\0’的char型字符串注意的问题
    C中char型字符串是以‘\0’为结束标志的,如果char型字符串中间有多个‘\0’,那么直接用它去初始化string对象会被截断(只到第一个‘\0’处),所有输入参数为char*类型的函数都不能直接用来处理这种中间含有‘\0’的char字符串,比如strcpy,string(const char *str = NULL)这种构造函数等等。    例如:    char *s= &quot;asgf...
关于char类型数组中null和空字符串的一些问题
用memset(str, 0, sizeof(str))给一个char类型的数组初始化之后,现在可以理解为这个数组里是空的。那么想要判断它为空,要用下面的方法: if(strlen(str) == 0) 或者 if(str[0] == '\0') 在使用第二个方法时,一般不建议,因为可能会导致溢出? 参见下面的链接: https://blog.csdn.net/selina8921...
C/C++_中NULL与空字符串的区别
今天遇到一个问题认识到C/C++中 NULL 与 空字符串 "" 是不相同的 总结如下: 空字符串是"",会创建一个对象,内容是"",有内存空间。 而NULL,不会创建对象,没有内存空间。形象的比喻:"" 相当于我的钱包里没钱 NULL 相当于我没有钱包  遇到的问题化简如下: 利用strcpy进行字符串的复制 strcpy不能用NULL作为源
将字符串中的空字符串去掉
str.replace(/^\s+|\s+$|\s+/g, ''); \s: space, 空格+: 一个或多个^: 开始,^\s,以空格开始$: 结束,\s$,以空格结束|:或者/g:global, 全局replace() 替换
写程序很难之去除字符串的空白字符
在做性能调优时,用JProfiler测试Web应用的性能,发现有个replaceBlank函数占用了10%的CPU时间,进去看了下,是个简单的用正则去除XML文档里空白字符串的功能。但是这个简单功能却消耗了10%的性能。 在Web应用里,去掉空白字符串,似乎是个简单的功能,但是真正写起来,却也有些麻烦事。总结下。 方式一:正则表达式 http://stackoverflow.com/ques
C++ 空字符('\0')和空格符(' ')
从字符串的长度:——&amp;gt;空字符的长度为0,空格符的长度为1 char a[] = &quot;\0&quot;; char b[] = &quot; &quot;; cout &amp;lt;&amp;lt; strlen(a) &amp;lt;&amp;lt; endl; //0 cout &amp;lt;&amp;lt; strlen(b) &amp;lt;&amp;lt; endl; //1 虽然输出于屏幕是一样的,但是他们还是有区别的:
关于文件输出空字符问题(C语言)
之前写一个将一些GPS报文中的经纬度提取出来的程序结果再将经纬度单独提取出来的同时,发现每次都会在结尾多出一个类似 y (Linux VIM编译环境) 的小字符让文件在执行后面的程序时,会出现或大或小的问题;   仔细看了程序发现可能问题出现在 while(!feof(in))  这个循环上    之前谭浩强的书中这个方法就经常出现 while(!feof(in)){ fputc(
String.split()遇到空字符串的几种情况
Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组    split 方法       该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。       stringObj.split([separator,[limit]])         stringObj              必选项。要被分解的 String 对象或文
C语言版Trim()函数,去除字符串中的空字符
/*************************************************************** /* 函 数 名:Trim /* 函数功能:C语言版Trim()函数,去掉字符串中的空字符 /* 参 数: /* str :源字符串 /* 返 回 值: /* 返回去掉空字符后的字符串 /* /*
string去空格
众所周知,string字符串去除空格的方法有trim()和replace(),区别在于trim()去首尾的空格,但是不能去中间的,而replace可以去除所有的空格。 string data1=" a b c "; data1=data1.trim(); 结果为"a b c"。 string data1="a b c "; data1=data1.Replace(" ", "") 结果为“
删除字符串中空格或者指定字符
/************************************************************************/ /* 删除字符串中指定字符 */ /************************************************************************/ void del_char(char* str,char c...
空字符串:“”和null的区别。
两者区别非常大,虽然都是没有信息,但是null代表堆内存中根本没有这个东西,而空字符串就完全不同了,空字符串也是字符串,他是有内存空间的,你可以这样尝试一下:String aaa = null;String bbb = &quot;&quot;;然后调用String的方法比如说aaa.indexOf(&quot;a&quot;);bbb.indexOf(&quot;a&quot;);这样的话,字符串aaa在调用indexOf的时候会报空指针异常,而bbb则...
消除字符中间空字符
a="张 三"rnb="张三"rn我想比较a与b,象上面情况应该是a与b相等。 请问我该如何比较它们?期待指导中....
C++ 中string类型和 C风格 char类型字符串比较
与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char* 1、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如be
string字符串遇到的问题 以及字符串为空或空格问题
http://bbs.bccn.net/thread-367153-1-1.html  可能是没有cin输入 判断字符串为空: bool empty() const;  The member function returns true for an empty controlled sequence. string a; if(a.empty()) printf("empty")
去掉字符串前后的回车、换行、空格、制表等字符
<br />BOOL  AllTrim(char * pszSrcStr)    // 去掉字符串前后的回车、换行、空格、制表等字符<br /> {<br />     BOOL  bBoldTail = FALSE;<br />     int  nIndx = 0, nLen = 0;<br />     char  szTmpStr[MAX_PATH + 1], * pszToken = NULL, *ptrSrc = pszSrcStr;<br /><br />     if ( (NUL
C语言中的空字符'\0'
今天在阅读源代码的过程中遇到了一个字符串操作: s[i] = ‘\0’ 当时感觉很奇怪,为什么要将一个位置的字符赋值为空字符串’\0’。原来空字符在C语言中是个很特殊的字符。主要体现在字符串中。字符串 字符串就是一串零个或多个字符,并且以位模式为全0的NUL字节即空字符(‘\0’)结尾。C语言中字符串没有显示的数据类型,字符串通常存储在字符数组或动态分配的内存中,在编码操作中通常将整个字符串作
Java中去掉空字符
在java中去掉空字符的三种方法1.trim() :去掉字符串左右两端的字符空格 2.repalaceAll(” “,”“):去掉字符串中所有的空格 3.relalaceAll(“+”,”“):去掉字符串中所有的空格具体代码:package com.examplezhc.demo; import android.os.Bundle; import android.app.Activity;
编写一个字符串类,实现将字符串中的相邻重复字符去掉功能,并输出最终的结果。
#include&amp;amp;lt;iostream&amp;amp;gt; #include&amp;amp;lt;string&amp;amp;gt; using namespace std; int main() { string s; cin &amp;amp;gt;&amp;amp;gt; s; for (int i = 1; i &amp;amp;lt; s.size(); i++) { if (s.at(i) == s.at(i - 1)) { s.erase(i
js去除字符串前后的空字符
在面试中有一道面试题是: 写一个方法实现, 去除字符串前后的空白字符串。在ECMAScript5中提出了trim方法,兼容IE9。 trim() 方法会从一个字符串的两端删除空白字符。并返回一个新的字符串。如果 trim() 不存在,可以在所有代码前执行下面代码: if (!String.prototype.trim) { String.prototype.trim = funct...
【Java】字符串三种空字符串null、new String()、""的区别
今天写个DEMO的时候碰到了个小麻烦,有关于题目所说的字符串这三者的区别,我觉得我真的是够了,居然会用得这么细,不过会了也好,碰到相关的问题就可以一言不合代码就开写!
JAVA 字符串的分割、字符大小写转换、去除空白内容
字符串的分割 大小写转换 去除空格  
删除std::String类型字符串首尾空格
#include // 删除左侧空格 std::string &trimleft(std::string &str) { str.erase(0, str.find_first_not_of(std::ctype_base::space)); return str; } // 删除右侧空格 std::string &trimright(std::string &str) {
String.split()结尾空字符串将被丢弃
测试 String str="1#2#3############"; String[] split = str.split("#"); for (String string : split) { System.out.println("str "+string); } 测试结果 str 1 str 2 str 3 问题:#号中间的空无法获取?(官方解释) sp
C语言中没有string类
C语言里有这个头文件,但是C语言里没有string这个类型 字符串都是通过char数组来存储的 这个头文件里声明的函数原型也全是针对char数组的种种操作。 直到C++中才出现了string这个类
C语言中空格符、空字符、字符数组结束符、换行、回车的区别
C语言中空格符、空字符、字符数组结束符、换行、回车的区别 标签: Cascii 2013-06-05 13:03 4650人阅读 评论(0) 收藏 举报  分类: 【C /C++】(7)  版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+]        空格符和空字符是不一样的,在ASCII里
string.split()方法对空字符的处理
java中的split函数用于将字符串分割为字符数组是很方便的,但由于不是很熟悉,犯了错误 如下: String strtest = "1,2,"; String arry[] = strtest.split(","); 这样得到的数组元素个数只是2两个,为什么呢,最后一个","后没有内容,它没有作为空字符串成为第三个数组元素,结尾的空字符串被丢弃了! 这个函数还有另一
c编程:输入一个字符串,求出字符串的最后一个字符,如果是空字符串则返回空字符。
//编写一个函数,函数说明为:char lastchar(char str[]) //功能:求一个字符串的最后一个字符,如果是空串,则返回空字符。? //再利用该函数编程,输入两个字符串,输出第一字符串的最后一个字符和第二个字符串的最后一个字符。 #include #include char lastchar(char str[]) { char c; int len=st
替换掉字符串中的空格
替换掉字符串中的空格,转载请注明作者和出处 Coder的不平凡:http://blog.csdn.net/pearyangyang/article/details/41920503    谢谢!        直接上代码:        str.replaceAll("\\s+", "")
语法分析器
语法预测分析程序,可以消除间接左递归,以@表示空字符!以ctrl+z表示输入结束!
Java进阶(二十一)java 空字符串与null区别
java 空字符串与null区别 1、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ; 2、内存分配 String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间
字符串去除换行、空格
String nets = ""; if (nets!=null) { /* 去除 \n 回车(\u000a) \t 水平制表符(\u0009) \s 空格(\u0008)\r 换行(\u000d)*/ Pattern p = Pattern.compile(""\\s*|\t|\r|\n""); Matcher m =
C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
C#中要如何才能删除一个字符串数组中的空字符串呢?随着微软对C#不断发展和更新,C#中对于数组操作的方式也变得越来越多样化。以往要实现过滤数组中的空字符串,都是需要实行循环的方式来排除和过滤。C#3.0新增的lambda表达式就可以很方便实现这个功能,下面介绍多种方式来实现清除数组中的空字符串,以及在.net中将字符串数组中字符串为空的元素去除。 方式一:使用lambda表达式筛选过滤掉数组
mysql 去除前后空白字符
在数据库导入excel中数据时,经常会出现一些空格或者其他特殊字符导致数据无法查询,我们都知道 trim(field) 可以消除字段前后的空格,但是如何消除空白的特殊字符呢:
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 c++学习后再学java 大数据培训后