首页 > 代码库 > 字符串的遍历
字符串的遍历
#include<iostream>using namespace std;void getChar1(char *str);void getChar2(char *str);int main(void){ //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值 char *str="I Love ShangHai";
//cin>>str; getChar1(str); getChar2(str); getchar();}void getChar1(char *str){ while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl;}void getChar2(char *str){ int len=strlen(str); for(int i=0;i<len;i++) { cout<<str[i]; } cout<<endl;}
“I Love ShangHai” C++会自动在串常量加上‘\0’表示结束。‘\0’的ASCII码值为0,代表一个空操作。while(*str) 和while(*str!=‘\0‘)是一个意思。
字符指针必须必须先申请堆空间,然后才能填入值。看看下面程序会出现什么问题。
#include<iostream>using namespace std;void getChar1(char *str);int main(void){ char *str; cin>>str; getChar1(str); getchar();}void getChar1(char *str){ while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl;}
f7成功编译。但是编译成功后运行时,直接奔溃。因为str 仅仅是一个字符指针,没有地方存输入的值。
#include<iostream>using namespace std;void getChar1(char *str);int main(void){ //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值 char *str="I Love ShangHai"; cin>>str; getChar1(str); getchar();}void getChar1(char *str){ while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl;}
f7成功编译。编译成功后运行f5,程序直接奔溃。正确做法应该这样......
#include<iostream>using namespace std;int main(void){ char *str=new char[80]; cout<<"输入一个字符串: "; for(int i=0;i<strlen(str);i++) { cout<<str[i]; } cout<<endl; delete []str; str=NULL;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。