string函数库,string类都包括什么常用函数

1 , string类都包括什么常用函数std::string s1,s2;//常用的有s1.size();//返回字符串长度s1=s1+s2;//字符串连接s1=s2;//字符串赋值if(s1==s2)//判断s1和s2是否相等{...}else{...}//【string函数库,string类都包括什么常用函数】
2 , C编程 关于string 库LZ再具体点,到底有几个string对象,还有最后的最大的string对象有几个,到底要空格,还是不要空格很简单#include <iostream>#include <string>using namespace std;int main()#include <iostream> using namespace std;int main (void) string a; string b,c; string d; cin>>a; cin>>b; cin>>c; d = a+b+c; cout<<d; d = a+" "+b+" " + c; cout<<d; system("pause"); return 0;}
3,Cstring函数内存溢出,一切都可能发生string2最多接收5个字符,string长度有21,你直接强制复制过去,那么一切皆有可能了 。你这个问题太难了,我也答不出 来,你可以咨询一下问问专业团体,也许他们会有你想要的答案 。谢谢!同意楼上,因为汉字编码的问题,一个汉字是2个BYTE 。string先分到内存空间,string2后分到,因为是局部变量,被分到栈区中,因此string2在string的前面,申请了5个字节,但是由于栈对齐的原因,在这里例子里面,二者距离就是8个字节,也就是string2里可以放8个字节 , 而它的第9个字节就是string[0]了 。这样你从string复制到string2,可以认为就是把每个字符都前移了8个字节,包括字符串的结束符/0 。最后的结果你会发现从string2开始识别的字符串就是原串,而从string开始 , 就是“五”了,(前面每个汉字都占两个字节)复制之前复制之后上面的解释是对的,内存空间发生了循环.
4,C中的标准库stringstr.reserve(cvec.size());改为:str.resize( cvec.size() );我来简单的解释一下吧: 首先 , 确切地说,vector是标准模版库(stl)里的,而不是标准库 其次,在你给出的程序当中,并不像你说的那样 , 其实,ivec1的内存位置没有改变,还是那一块,除非ivec2的size超过的ivec1的capacity,他才会触发realloc 。你会出现这种疑问原因只有一点:你把迭代器当成指针了 。值得注意的是,迭代器有指针的功能,但他不是指针,当对容器进行了插入删除操作的时候,会导致部分或全部迭代器的失效 。你可以做个实验 , 定义个把ivec1=ivec2去掉,改成ivec1.push_back(9); 这样,你的指向第一个元素的迭代器同样会失效 。如果你是插入,insert或者push_back什么的,那么全部迭代器失效,因为他不能确定是否插入元素后会进行内存的重新分配 如果你是删除,pop_back或者erase什么的,那么当前元素及其后的迭代器全部失效 你的那个赋值操作,其实是相当于把ivec1清空,然后在插入,所以,导致全部失效,但没有引起内存重新分配应该是需要将: cout<<5 , c字符串string函数就是字符串的操作了哈用string很简单就可以实现了#include <iostream>#include <string>using namespace std;int main() string claNo = "zx09081T"; string stuNo; cout << "Input a student Number:"; cin >> stuNo; for ( int i =0;i < claNo.size();i++) if( claNo[i] == stuNo[i] ) continue; else cout << " Not same class!" << endl; break; } } return 0;}这个很简单 没那么复杂 你要看看string#include <iostream>#include <string>using namespace std;int main() string classNo = "zx09081T"; string stuNo; cout << "Input a student Number:"; cin >> stuNo; for ( int i =0;i < classNo.size();i++) if( classNo[i] == stuNo[i] ) continue; else cout << " Not same class!" << endl; break; } } system("pause"); return 0;}

    推荐阅读