资料:C++中处理C风格字符串
在C++语言中,除了继承了C语言中的这种字符串表达形式外,还新添了string类用来表达字符串。就表义来说,这两种字符串存储方式是等价的,但在处理的过程中却有显著的区别。在string类中,所有的对字符串的操作都被封装为成员函数,因此只要string内部有统一的约定,可以不在使用’\0’作为结尾标志。但对于C语言中的字符串,所有的操作都是来源于
中的以str开头的函数,这些函数的特点就是都以’\0’作为所处理的字符串的结尾标志。 由于这些显著的特点,为了区分C++中这两种不同的字符串,使用“C风格字符串”来特指来源于C语言的字符串存储方式。[更多]
问题
利用list和vector保存C风格字符串,并比较两个容器是否相等.
源代码
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; } |