字符串语法

记录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截取长度可知,输入不相关的语句,字符数组长度会不一样,甚至会出现截取的长度大于局部变量数组最大范围的情况。

原文地址:https://www.cnblogs.com/shoulinniao/p/9457360.html