zoukankan      html  css  js  c++  java
  • 【转载合集】string用法工具箱

    string逆序:

    string str;

    cin<<str;

    string s(str.rbegin(),str.rend());

    cout << s <<endl;

       

    如果写成string s(str.end(),str.begin());会报错 "终端反馈超出了string的最大长度"

       

    类型转换:stringvector<char>

        string str("iloveyou");

        vector <char> ta;

        ta.resize(str.size());

        ta.assign(str.begin(),str.end());

    再转回来

    str.clear();

        str.assign(ta.begin(),ta.end());

    c++ 将一个char 转化为string

    const char c = 'a';

    //1.使用 string 的构造函数

    string s(1,c);

    //2.声明string 后将char push_back

    string s1;

    s1.push_back(c);

    //3.使用stringstream

    stringstream ss;

    ss << c;

    string str2 = ss.str();

       

    //注意 使用to_string 方法会转化为char对应的ascii

    //原因是 to_string 没有接受char型参数的函数原型,有一个参数类型

    //int 的函数原型,所以传入char型字符 实际是先将char 转化

    //int 型的ascii 码,然后再转变为string

    //以下输出结果为 97

    cout << to_string(c) << endl;

       

    C++中将string按照空白字符分割的新方法

       

    使用stringstream对象简化类型转换

    首先要引入头文件<sstream>,C++标准库中的<sstream>提供了比ANSI C<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。

    <sstream>库是最近才被列入C++标准的。(不要把<sstream>与标准发布前被删掉的<strstream>弄混了。)因此,老一点的编译器,如GCC2.95,并不支持它。如果你恰好正在使用这样的编译器而又想使用<sstream>的话,就要先对它进行升级更新。

    <sstream>库定义了三种类:istringstreamostringstreamstringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。

    注意,<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

       

    一个实例

       

    #include<iostream>

    #include<string>

    #include<sstream>

    #include<vector>

    using namespace std;

       

    int main(){

    //用于存放分割后的字符串

    vector<string> res;

    //待分割的字符串,含有很多空格

    string word=" Hello, I want to learn C++! ";

    //暂存从word中读取的字符串

    string result;

    //将字符串读到input

    stringstream input(word);

    //依次输出到result中,并存入res

    while(input>>result)

    res.push_back(result);

    //输出res

    for(int i=0;i<res.size();i++){

    cout<<res[i]<<endl;

    }

    return 0;

    }

    总结

    1. <sstream>还能实现自动类型转换,我会在以后写一些利用它进行数据类型转换的文章。

    2. C++ Primer书中曾经提到过:

       

    int main(){

    string s;

    cin>>s;

    cout<<s<<endl;

    return 0;

    }

    This program begins by defining a string named s. The next line,

    cin>>s

    reads the standard input storing what is read into s. The string input operator:

    (1) Reads and discards any leading whitespace(e.g.,spaces,mewlines,tabs).

    (2) It then reads characters until the next whitespace character is encountered.

    也就是说输入的字符串不管有多少空格,传入cin的只有第一个非空白字符下次再遇到空白字符之间的字符串。例如:输入的字符串为" Hello, I want to learn C++! ",则传入cin的只有"Hell0,"。这一点非常重要,必须牢记在心。

    ————————————————

    版权声明:本文为CSDN博主「猫小时候」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/oNever_say_love/article/details/49123935

  • 相关阅读:
    STS新建MavenProject后java文件夹不出来的问题
    tomcat版本的选择
    eclipse/sts快捷键
    STS使用前准备工作
    注释 @Autowired 和@Resource 的区别
    java获得项目绝对路径
    使用Run as --> maven install 报错
    本地仓库settings.xml中使用阿里的仓库
    Maven学习——安装与修改Maven的本地仓库路径
    Eclipse+Maven创建webapp项目
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/12047334.html
Copyright © 2011-2022 走看看