将string对象全都改成小写形式 ,运行出错,检查好久实在没办法了,求教大神

prehension 2014-04-02 07:50:15
#include<iostream>
#include<string>
using namespace std;
string low_upperletters( string &s);
int main(){
cout<<"please enter some strings ";
string s,str;
cin>>s;
cout<<s<<endl;
str=low_upperletters(s);
return 0;
}

string low_upperletters(string &s)
{
int i=0;
while(s[i]!='\0')
{ if(s[i]>='A'&&'Z')
s[i]+=32;
i++;

}return s;
}
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
荔枝树_12w 2014-04-03
  • 打赏
  • 举报
回复
可以用str.size来确定长度 或者用string类的迭代器来遍历
荔枝树_12w 2014-04-03
  • 打赏
  • 举报
回复
为什么不用 islower() toupper() 呢
meinanjing 2014-04-03
  • 打赏
  • 举报
回复
引用 1 楼 ak47_wz 的回复:


#include<iostream>
#include<string>
using namespace std;
string low_upperletters( string &s);
int main(){
cout<<"please enter some strings ";
string s,str;
 cin>>s; 
 cout<<s<<endl;
 str=low_upperletters(s);
 cout<<s<<endl;     //加一句输出。
 return 0;
}
 
string low_upperletters(string &s)
{
int i=0;
while(i != s.size())    //这里也错了,我也不太懂C++,不过string貌似不是以C风格的0结尾
{ if(s[i]>='A'&&s[i]<='Z')   //这里错了
s[i]+=32;
     i++;
   
}return s;  
 } 
确实不以\0为结束
buyong 2014-04-03
  • 打赏
  • 举报
回复
std::transform(str.begin(),str.end(),str.begin(),tolower); http://www.360doc.com/content/13/0827/16/110467_310268217.shtml
mujiok2003 2014-04-03
  • 打赏
  • 举报
回复
引用 3 楼 u012189644 的回复:
引用
if(s[i]>='A'&&'Z')
,这里错啦,改成if(s[i]>='A'&&s[i]<='Z')
呵呵。
prehension 2014-04-03
  • 打赏
  • 举报
回复
谢谢各位,我已经知道答案了
hz08108067 2014-04-03
  • 打赏
  • 举报
回复
引用
if(s[i]>='A'&&'Z')
,这里错啦,改成if(s[i]>='A'&&s[i]<='Z')
微型蚂蚁 2014-04-02
  • 打赏
  • 举报
回复
int i=0; while(s[i]!='\0') { if(s[i]>='A'&&s[i]<='Z') s[i]+=32; i++; }return s;
水平不流 2014-04-02
  • 打赏
  • 举报
回复


#include<iostream>
#include<string>
using namespace std;
string low_upperletters( string &s);
int main(){
cout<<"please enter some strings ";
string s,str;
 cin>>s; 
 cout<<s<<endl;
 str=low_upperletters(s);
 cout<<s<<endl;     //加一句输出。
 return 0;
}
 
string low_upperletters(string &s)
{
int i=0;
while(i != s.size())    //这里也错了,我也不太懂C++,不过string貌似不是以C风格的0结尾
{ if(s[i]>='A'&&s[i]<='Z')   //这里错了
s[i]+=32;
     i++;
   
}return s;  
 } 

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧