C++学习(一):标准库类型 string

string 定义在命名空间std
using std::string

初始化

string有直接初始化和拷贝初始化
直接初始化:string s3(“value”)
拷贝初始化:string s3 = “value”
区别在于:当初始值只有一个时,使用直接初始化或者拷贝初始化都行,但当初始值有多个时,一般来世只能用到直接初始化的方式
如:string s7(10, ‘c’) //直接初始化,s7的内容是cccccccccc

读写

可以直接使用cin, cout
cin在读入时,string对象会直接忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止
如:

int main()
{
    string s;
    cin>>s;
    cout<<s<<endl;
    return 0;
}

如果程序输入” Hello World! “,那么将会输出Hello,输出结果中无空格

或者使用getline读取一整行,

int main()
{
    string line;
    while (getline(cin, line))
    cout << line << endl;
    return 0;
}

如果程序输入” Hello World! “,那么将会输出 Hello World! ,getline遇到换行符就会退出,当然换行符从缓冲区被读入,但是不存储到字符串中,如果第一个字符就是换行符,那么将读入一个空串

处理每个字符,使用基于范围的for语句
for(declaration: expression)
statement

//统计string对象中标点符号的个数
string s("Hello World!!!");
decltype(s.size()) punct_cnt = 0;
for(auto c:s)
    if(ispunct(c))
        ++punct_cnt;
cout << punct_cnt <<" punctuation characters in " << s << endl;

程序的输出结果将是:
3 punctuation characters in Hello World!!!

使用for语句改变字符串中的字符,那么要使用引用,for(auto &c : s)
那么c就是s中一个字符的别名,指向同一个地址,所以改变c也就是改变对应的字符

两种方法将0到15之间的十进制数转换成对应的十六进制数的形式,并以字符串的形式输出:

#include <iostream>
using namespace std;
/*
//方法1:设置一个常字符串,进行访问
int main() 
{
    const string hexdigits = "0123456789ABCDEF";
    string::size_type n;
    string s2 ;
    while(cin>>n)
        if(n<hexdigits.size()) //忽略无效输入
            s2+=hexdigits[n];
    cout<<"Your hex number is: "<<s2<<endl;
    return 0;
}
*/
//方法2:对每个字符挨个转换,同时超出0-15范围的省略
int main() 
{
    string s;
    string::size_type n;
    while(cin>>n)
        if(n<10)
            s+=(char)(n+'0');
        else if(n<16)
            s+=(char)(n-10+'A');
    cout<<"The hex num is: "<<s<<endl;
    return 0;
}

这就是C++中string类型的调用了,希望对大家有所帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值