C++:比较C风格字符串

资料:C++中处理C风格字符串

在C++语言中,除了继承了C语言中的这种字符串表达形式外,还新添了string类用来表达字符串。就表义来说,这两种字符串存储方式是等价的,但在处理的过程中却有显著的区别。在string类中,所有的对字符串的操作都被封装为成员函数,因此只要string内部有统一的约定,可以不在使用’\0’作为结尾标志。但对于C语言中的字符串,所有的操作都是来源于中的以str开头的函数,这些函数的特点就是都以’\0’作为所处理的字符串的结尾标志。

由于这些显著的特点,为了区分C++中这两种不同的字符串,使用“C风格字符串”来特指来源于C语言的字符串存储方式。[更多]

问题

利用list和vector保存C风格字符串,并比较两个容器是否相等.

C++.
image-2086

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*************************************************************************
    > File Name: test.10.5.cpp
    > Author: puruidong
    > Mail: 1@w1520.com
    > Created Time: 2014年06月05日
 ************************************************************************/

#include<iostream>
#include<vector>
#include<list>
#include<numeric>
using namespace std;

/*
 
 利用list和vector保存C风格字符串,并比较两个容器是否相等.

 */



int main()
{
   
    vector<char> ve;
    ve.push_back('a');
    ve.push_back('b');
    ve.push_back('c');
    ve.push_back('k');//不相等的元素,改成d即返回相等.
    ve.push_back(0);
    list<char> l;
    l.push_back('a');
    l.push_back('b');
    l.push_back('c');
    l.push_back('d');
    l.push_back(0);
    auto result = equal(ve.cbegin(),ve.cend(),l.cbegin());
    cout << "两个容器的比较结果是:" << result << endl;
    return 0;
}