【ACM】string和stringstream使用

一:string

string 是c++ 提供的字符串类型,不限长度。头文件#include < string>
声明:
string s;
string s=”china”;
和char数组不同的是string对象中不含\0,也就是说如果是一个三个字符的字符串,在string s[]中仅仅到s[2]就会结束。

  • 操作 string对象
  • 声明 string s;
  • 字符串长度 s.length()或者s.size()
  • 读取一行 getline(cin,s);
  • 赋值 s=”china”;
  • 字符串相加 s=s+”china”;s+=”china”;
  • 字符串比较 s == “china”
  • 取某一个字符 s[i]

  • 操作 char类型字符串
  • 声明 char s[100]; 或者char *a;
  • 字符串长度 strlen(s)
  • 读取一行 gets(s);
  • 赋值 strcpy(s,”china”);
  • 字符串相加 strcat(s,”china”);
  • 字符串比较 strcmp(s,”china”);
  • 取某一个字符 s[i]

二:stringstream

stringstream 来源于c++,头文件#include 。
c++中引入了ostringstream , istringstream , stringstream 三个类,应包含头文件iostream,sstream。
stringstream类的对象经常用于string与各种内置类型的转换。

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    stringstream sstr;
    //int 转换 string****************************
    int a=100;
    string str;
    sstr<<a;
    sstr>>str;
    cout<<str<<endl;
    //string 转换 char[]
    sstr.clear();//如果是利用同一个stringstream对象实现多种类型的转换,都必须调用clear()来清空成员函数
    string name="china";
    char cname[100];
    sstr<<str;
    sstr>>cname;
    cout<<cname<<endl;
    //string 转换 int
    sstr.clear();
    int n=0;
    string result="10000";
    sstr<<result;
    sstr>>n;
    cout<<n<<endl;
    return 0;
}

stringstream还可以用于一个字符串的分割。

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string s;
    stringstream ss;
    int a,b,c;
    getline(cin,s);
    ss.clear();
    ss.str(s);//stringstream在调用str(),会返回临时的string对象,因为是临时的对象,所以在整个表达式结束后会被析构。
    /*
    stringstream ss("china");
    const char* cstr2 = ss.str().c_str();  错

    const string& str2 = ss.str();
    const char* cstr2 = str2.c_str();  对
    */
    ss>>a>>b>>c;
    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值