字符串语法
记录C/C++读取和不读取空格的语法
#include<stdio.h> #include<iostream> #include<algorithm> #include<string> #include<string.h> using namespace std; int main() { ///用char数组,如果是一个一个复制式赋值,最后要补'\0',不然没有结束地方 char str1[15]; char str2[15]; scanf("%s",str1);///遇到空格、回车等会结束获取输入的字符串,后面的字符串会过滤掉(存放在输入流中)。 ///如果后面还需要输入字符串,则会从前面存放的字符串开始获取。 getchar(); ///吸收空白字符 gets(str2); ///可以输入空格,回车结束 for(int i=0;i<strlen(str1);i++)///输出需要截取到字符长度,不然会输出一些乱七八糟的东西 ///strlen获取长度需要头文件<string.h> printf("%c",str1[i]); ///单个字符输出 printf("\n"); printf("%s\n",str2); ///字符串输出 ///string型,需要头文件<string> string str3; string str4; cin>>str3; ///cin输入,遇到空格和回车结束,跳过空格,空格还留在缓冲区 getchar();///可以读取空白字符,没有赋值给变量,就释放了 getline(cin,str4);///可以输入空格 cout<<str3<<endl; printf("%s\n",str4.c_str());///printf输出需要调用函数 ///复制,存储副本 str3 = str4;///string型可以直接复制,直接添加字符或者字符串,但是不能用 += 这个符号
int len=str3.size();///获取长度
bool flag=str3.empty();///判断是否为空字符串,其实判断长度为0也可以。
str3 = str3+"abc"; str3 = str3+'a'; cout<<str3<<endl; return 0; }
全局变量和局部变量的数组有所差异。
定义全局变量的字符数组,并且是一个一个赋值时,哪一个没有赋值,自动补'\0'。局部变量则会随机填充,用strlen截取长度可知,输入不相关的语句,字符数组长度会不一样,甚至会出现截取的长度大于局部变量数组最大范围的情况。