关于C++的标准库的相关内容

原文地址

STRING

#include<iostream>
#include<string>
using namespace std;
int main(){
  string s;
  cin>>s;    
  //当有字符出现后遇空白(空格符,换行符,制表符)便终止
  //如输入”sdjajsd  1321weia“  输入的结果将只会为sdjajsd
  cout<<s<<endl;
  return 0;
}

string的empty()函数

string s;
while(getline(cin,s)){//每次都一行
    if(!s.empty()){    //去掉空行
        cout<<s<<endl;
    }
}
return 0;

string的size()函数

string s;
while(getline(cin,s)){
    if(s.size()>80){  //当一行中的字符超过80时才读出
        cout<<s<<endl;
    }
}
return 0;

切记字符串字面值与string是不同的类型

string类的输入运算符是遇到空白便停止,空白包括(空格,换行符,制表符)

而getline函数是读取一行,包括最后的换行符,然后去掉最后的换行符将所读内容赋值给string对象中

处理string对象中的字符

在c++中cctype头文件中定义了一组标准库函数处理这部分工作

常用的有:

isalunm(c)       //当c是字母或数字时为真
isalpha(c)       //当c是字母时为真
isdigit(c)       //当c是数字时为真
islower(c)       //若c为小写则返回真
isupper(c)       //若c为大写则返回真
tolower(c)       //将c变为小写
toupper(c)       //将C变为大写字母
isspace(c)       //当c是空白时为真
ispunct(c)       //当c是标点符号时为真

想处理每个字符,最好使用基于范围的for语句

for(declaration:expression)
    statement

较为坑的是由于现在大学的几乎所有自带IDE都是VS2010,但是VS2010不支持基于范围的for语句,线程等。。。。。,若是你要去一些大学内部的考点的话,,咳咳,,那就跟我一样尴尬了。。。。囧。。

在这种情况下你要想全部遍历的话便只能用类似如下的代码。。

for(int i=0;i<s.size();++i){        
        char c=s[i];     //或类似string c=s.substr(i,1);
        cout<<c<<endl;
    }

所以这就很坑爹了,有一点其实我是真的不太明白,为什么到现在大学还都是用什么VC++6.0 VS2005 VS2010 这种已经早就几乎被所以程序员弃用的IDE。。。与时俱进多好,,哈哈,小小吐槽一下下,不喜勿喷

如果我们不需要处理每一个字符,要访问单个字符时,便可利用下标和迭代器

需要注意的是使用下标时要注意下标>=0且小于所要访问字符串的大小,若是越界,变可能发生不可预知的错误,所以我们也不能对空字符串进行下标访问

顺便提一句 decltype为返回相关类型,例如s.size()返回类型为string::size_type,是无符号整数

Vector

Vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如

vector vector<类> vector

原文地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值