zoukankan      html  css  js  c++  java
  • C++基础总结(2)---字符串

         字符串是存储在内存的一系列字符。C++处理字符串有两种方式

               第一种来自C语言,即字符数组。

               第二种来是基于string类库的方法。

          C风格的字符串具有一种特殊的性质:以空字符结尾(空字符表示为''),其ASCII码值为0,用来标记字符产结尾。

         例如一下两个例子:

              char a[5]={'a','b','c','d',''};//a string 

              char b[5]={'a','b','c','d','e'};//not a string

         注意:在确定字符串存储所需的最短数组是,注意别忘了将结尾''计算在内。

          

    char a[9];

    cout<<sizeof(a);

    其中sizeof(a)测试的是整个数组的长度,即9*sizeof(a[0]);


    在使用cin输入字符串的时候,容易掉入一个小陷阱。比如下面一段程序:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        const int arSize=20;
        char name[arSize];
        char dessert[arSize];
    
        cout<<"Enter your name:"<<endl;
        cin>>name;
        cout<<"Enter your favorite food"<<endl;
        cin>>dessert;
        cout<<"I have some delicious "<<dessert;
        cout<<" for you, "<<name<<endl;
        return 0;
    }
    

    下面是程序的运行截图



    还没来得及输入甜点,就已经被认为输入结束。因为不能通过键盘输入空字符(''),因此cin使用别的方法(空格,制表符,换行符)来确定字符串结束的位置,这就意味着cin在获取字符串数组的时候之获取了前面的一个单词。而将空格后面的单词通过第二个cin。

    解决方方法有两种面向行的输入。

    第一种:调用cin.getline(arrayname,length);两个参数分别是字符数组的名称和要输入的长度。当按下enter之后最后的换行符将会被装空字符替换。

    第二种:调用cin.get(arrayname,length),参数和前面的意思是一样的。区别在于get不在读取并且丢弃换行符。

    cin.get(name,ArSize);

    cin.get(dessert.ArSize);

    由于第一次调用之后换行符留在了队列当中。当第二次调用的时候读取的是换行符,会认为该字符串已经输入结束。

    正确的使用方法:

    cin.get(name.ArSize);

    cin.get(dessert,ArSize);

    混合输入字符串和数字的时候

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout<<"What year is your hourse built?"<<endl;
        int year;
        cin>>year;
        cout<<"What is its street address?
    ";
        char address[80];
        cin.get();
        cin.getline(address,80);
        cout<<"Year built:"<<year<<endl;
        cout<<"Address"<<address<<endl;
        cout<<"Done"<<endl;
        return 0;
    }
    
    运行结果


    原因和上面的一样,输入数字之后的换行符被getline读到了。解决办法,在getline前面加上一个cin,get()


    string类和字符数字大体相似。但是string用起来更加安全和方便。其主要区别是课件string对象声明成简单变量而不是数组

    string str;

    string str2="panhter";

    类的设计可让程序自动处理string'的大小。string的声明创建一个长度为0的string。当输入读到string时将自动调节string的长度.



       

        

  • 相关阅读:
    eclipse下配置hadoop环境
    eclipse下安装hadoop伪分布式集群
    ubuntu安装eclipse步骤
    Fiddler修改抓包请求
    Fiddler抓包(以谷歌浏览器、安卓手机为例)
    whistle抓包-数据包分析
    whistle手机抓包(以安卓手机为例)
    whistle浏览器抓包(以火狐浏览器为例)
    whistle安装
    Jmeter结构体系及运行原理
  • 原文地址:https://www.cnblogs.com/gaot/p/7709703.html
Copyright © 2011-2022 走看看