string 与Vector 向量变量的基本操作

string
string是一种自定义的类型,它可以方便地执行c-串所不能直接执行的一切操作。它处理的空间占用问题是自动的,需要多少,用多少,不像字符指针那样,提心吊胆于指针脱钩时的空间游离。它可以从c-串转换得到,还可以从内部“提炼”出c串........。string本身就是针对字符串操作来设计的。例如:
//-----------------------------------------------------------------------------------------
#include <iostream>
#include <algorithm>

using namespace std;

//------------------------------------------------------------------------------------------
int main()
{
    string a,s1="Hello ";//Hello后面有一空格
    string s2="123";
    a=s1;                                                                                                //复制
    cout<<(a==s1?" ":"not")<<"equal"<<endl;                                            //比较
    cout<<a+s2<<endl;                                                                                                //连接
    reverse(a.begin(),a.end());                                                                                //倒置串
    cout<<a<<endl;
    cout<<a.replace(0,9,9,'c');                                                                                //设置
    cout<<(s1.find("ell")!=-1?" ":"not")<<"found/n";                                //查找串
    cout<<(s1.find('c')!=-1?" ":"not")<<"found/n";                                    //查找字符
} //================================================
运行结果:
equal
Hello 123
321 olleH
ccccccccc
found
not found




string还有其它的操作,如搜索操作、插入操作、取长度、删除字符、删除字串、判断空串等。

string与c-串的输入与输出(string&C-string I/O)
(1)循环读入单词操作将内容送到变量中,直到读不到数据(缓冲区读完,并且没有数据接续,则流状态变成false)
for(string s;cin>>s;)
    cout<<s<<" ";
cout<<endl;
或者
for(char a[10];cin>>a;)
    cout<<a<<" ";
cout<<endl;
(2)通过getline将其一次性输入:
string s;
getline(cin,s);
cout<<s<<endl;
或者
char a[40];
cin.getline(a,40);
cout<<a<<endl;

string流(string streams)
如果有一个文件aaa.txt,有若干行,不知道每行有几个整数,要编程输出每行的整数和,该怎么实现?


aaa.txt内容:
12  3  45  67 8  9
56 523 45 65
45 24  42   2
45
4242 2464
//================================================
//整行读入再分解读入
//================================================
#include <iostream>
#include <sstream>
#include <fstream>

using namespace std;
//-----------------------------------------------------------------------------------
int main()
{
    ifstream in("aaa.txt");
    if(!in)
    {
        cout<<"error"<<endl;
       return 0;
    }
    for(string s;getline(in,s);)
   {
        int a,sum=0;
        for(istringstream sin(s);sin>>a;sum+=a);
        cout<<sum<<endl;
    }
}
//==============================================



istringstream是输入string流,它在sstream头文件中说明。该语句类似文件流操作 ,只不过创建sin流时,其参数为string对象。它是将string的实体看作是一个输入流,因而,sin>>a即是从string流输入整数到a中,一直输到最后一个整数
getline函数的返回是流状态,通过其可以判断文件是否还有数据可读。



向量(vectors)
1、基本操作
定义方式:
    (1)vector <int>a(10);                                              //定义10个整数元素的向量,但没有给出初值,其值是不确定
    (2)vector <int>b(10,1);                                                       //定义10个int的向量,初值为1
    (3)vector <int>c(b);                                                                //用现成的向量来创建一个向量
    (4)vector <int>d(b.begin(),b.begin()+3);           //定义其值为b向量中第0个到第2个(共3个)元素的向量
    (5)int a[7]={1,2,5,3,7,9,8};
          vector<int>va(a, a+7);
向量遍历的循环控制
     for(int i=0;i<a.size();i++)
        cout<<a[i]<<"    ";
     for(vector<int>::iterator it=a.begin();it!=a.end();++it)
        cout<<*it<<"   ";
常用操作:
    a.assign(b.begin(),b,begin()+3);                    //b向量的0~2的元素构成向量赋给a   
    a.assign(4,2);                                                                      //使a向量只含0~3,且赋为值2
    int x=a.back();                                                                        //将a的最后一个向量元素赋给整数变量x
    if(a.empty()) cout<<“empty”;                                       //判断向量是否为空
    int y= a.front();                                                                        //将a的第一个向量元素值赋给整数变量y
    a.pop_back();                                                                        //删除a向量的最后一个元素
    a.push_back(5);                                                                    //在a向量最后插入一个元素,其值为5
    a.resize(10);                                                                            //将向量元素个数调到10个。多则删,少则补,其值随机
    a.resize(10,2);                                                                        //将向量元素个数调到10个。多则删,少则补,其值为2
    if(a==b) cout<<"equal";                                                    //判断向量是否相等,比较操作还有!=,<,>,<=.>=

除此之外,还有元素插入与删除、保留元素个数、容量观察等操作






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值