string

头文件string,string类位于名称空间std中,因此必须提供using编译,或者使用std::string来引用它。

在很多方面,使用string对象的方式与使用字符数组相同。

string对象声明为简单变量,而不是数组:类设计让程序能够自动处理string的大小。

运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象的末尾。

函数strcpy()将字符串复制到字符数组中,函数strcat()将字符串附加到字符函数末尾。括号中两个位置,将后一个复制到或者附加到前一个当中。

//strtype3.cpp -- more string class features
//strtype4.cpp -- line input
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main()
{
    char charr1[20];
    char charr2[20]="jaguar";
    string str1;
    string str2="panther";

    str1=str2;
    strcpy(charr1,charr2);

    str1+=" paste";
    strcat(charr1," juice");

    int len1=str1.size();
    int len2=strlen(charr1);

    cout<<"The string "<<str1<<" contains "<<len1<<" characters.\n";
    cout<<"The string "<<charr1<<" contains "<<len2<<" characters.\n";
    char charr[20];
    string str;

    cout<<"Length of string in charr before input: "<<strlen(charr)<<endl;
    cout<<"Length of string in str before input: "<<str.size()<<endl;
    cout<<"Enter a line of text:\n";
    cin.getline(charr,20);
    cout<<"You entered: "<<charr<<endl;
    cout<<"Enter another line of text:\n";
    getline(cin,str);
    cout<<"You entered: "<<str<<endl;
    cout<<"Length of string in charr after input: "<<strlen(charr)<<endl;
    cout<<"Length of string in str after input :"<<str.size()<<endl;
    return 0;
}
Code

string类具有自动调整大小的功能,从而能够避免这种问题发生。函数strlen()是一个常规函数,而size()是一个类方法。方法是一个函数,只能通过其所属类的对象进行调用。

        初始化的数组的内容是未定义的;函数strlen()从数组的第一个元素开始计算字节数,直到遇到空字符。对于未被初始化的数据,第一个空字符的出现位置是随机的,因此在运行过程中得到的初始的数组长度是不同的。string对象的数组在未被初始化时自动设置为0。

        比较string类字符串:类设计能够使用关系运算符进行比较,因为类函数重载了这些运算符。

        字符串和string对象用途几乎相同,但与数组相比,string对象与结构的更相似。可以将一个结构赋给另一个结构,也可以将一个对象赋给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。

        size()和length()成员函数都返回字符串中的字符数。length()成员来自较早版本的string类,而size()则是为提供STL兼容性而添加的。

posted @ 2018-08-27 21:28  子诚-  阅读(123)  评论(0编辑  收藏  举报