zoukankan      html  css  js  c++  java
  • C++学习36 string类和字符串

    C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string。string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针。

    使用 string 类需要包含头文件 <string>,下面我们逐一介绍该类的功能。

    string 的几种用法:

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string s1;
        string s2 = "c plus plus";
        string s3 = s2;
        string s4 (5, 's');
        return 0;
    }

    本例介绍了几种定义 string 类型变量的方法。变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是""(空字符串)。变量 s2 在定义的同时被初始化为"c plus plus"。与C风格的 char 字符串不同,string 类型的变量结尾没有 '',string 类型的本质是一个 string 类,而我们定义的变量则是一个个的 string 类的对象。变量 s3 在定义的时候直接用 s2 进行初始化,因此 s3 的内容也是"c plus plus"。变量 s4 被初始化为由 5 个 's' 字符组成的字符串,也就是 "sssss"。

    从上面的代码可以看出,string 变量可以直接通过赋值操作符“=”进行赋值。string 变量也可以用C风格的字符串进行赋值,例如,s2 是用一个字符串常量进行初始化的,而 s3 则是通过 s2 变量进行初始化的。

    与C风格的字符串不同,当我们需要知道字符串长度时,可以调用 string 类提供的 length() 函数。如下所示:

    string s = "c plus plus";
    int len = s.length();
    cout<<len<<endl;

    这里,变量 s 也是 string 类的对象,length() 是它的成员函数。由于 string 变量的末尾没有 '' 字符,所以 length() 返回的是字符串的真实长度,而不是长度 +1。

    转换为 char 数组字符串

    虽然C++提供了 string 类来替代C语言中的 char 数组形式的字符串,但在编程中有时必须要使用C风格的字符串,为此,string 类为我们提供了一个转换函数 c_str(),该函数能够将 string 变量转换为一个 const 字符串数组的形式,并将指向该数组的指针返回。请看下面的代码:

    string filename = "input.txt";
    ifstream in;
    in.open(filename.c_str());

    为了使用文件打开函数 open(),必须将 string 类型的变量转换为字符串数组。

    string 字符串的输入输出

    string 类重载了输入输出运算符,可以像对待普通变量那样对待 string 类型变量,也就是用“>>”进行输入,用“<<”进行输出。请看下面的代码:

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string s;
        cin>>s;  //输入字符串
        cout<<s<<endl;  //输出字符串
        return 0;
    }

    虽然我们输入了两个由空格隔开的 "string",但是只输出了一个,这是因为输入运算符”>>“默认会忽略空格,遇到空格就认为输入结束,所以最后输入的 "string" 没有被存储到变量 s。

  • 相关阅读:
    Spring Security 记住我功能 详解
    浅谈前端SPA(单页面应用)
    Token问什么可以避免CSRF/XSRF?
    总结 XSS 与 CSRF 两种跨站攻击
    localStorage,sessionStorage和cookie的区别及使用
    cookie,token验证的区别
    彻底弄懂session,cookie,token
    HTTP cookies 详解
    纯css3实现文字间歇滚动效果
    我的less学习之路
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/5836924.html
Copyright © 2011-2022 走看看