Error[8]: Undefined offset: 435, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

文章目录

string类的简单概念理解

1,首先,标准库给我们提供了提供string类,使用的时候需要使用标准命名空间
using namespace std; 另外,它帮我们封装好了成员函数,和成员变量。
这样外面在解决问题的时候,我们可以直接调用早就写好的成员函数了。

    class string
{
	//构造函数
	//析构函数
	//........各种功能的函数  ,大佬已经帮我们写好了


private:
	char* _str;
	size_t capacity;
	size_t size;
};
C++文档网站

我们需要去网站里面去查看文档去学习
这个比较好,不混乱 ,早期用这个,推荐这个 : https://cplusplus.com/
这个是官方网站,比较混乱,但是更新的比较快,适合查看新语法:https://en.cppreference.com/w/

点开之后直接搜索string即可

先看看构造函数,析构函数,赋值重载

析构函数没什么,就是释放空间,对象的生命周期结束后自动调用。

#include 
using namespace std;

int main()
{
	string s1();          //无参构造函数,这是个匿名对象,生命周期只在这一行
	string s2("hello world");   //传字符串的构造函数
	string s3(s2);            //传同类型的构造函数
	cout << s3 << endl;
	
	string s4("haha");        
	s4 = s3;                   //同类型的赋值重载
	cout << s4 << endl;

	s4 = "24556";            //const char* 的赋值重载
	cout << s4 << endl;

	s4 = 'a';                //单个字符的赋值重载
	cout << s4 << endl;
	return 0;
}

看看迭代器iterator,如何去遍历

不用想的太复杂,就是类似于指针的东西,我们现在会用就可以了

int main()
{
	string s1("hello world");
	string::iterator it = s1.begin();   //这里的作用域 *** 作符,指定的是string的迭代器
	while (it != s1.end())          
	{
		cout << *it << " ";
		it++;
	}

	string::reverse_iterator rit = s1.rbegin();   //倒着遍历
	while (rit != s1.rend())
	{
		cout << *rit << " ";
		it++;
	}
	return 0;
}

capacity 关于容量的函数

int main()
{
	string s1("hello world");
	cout << s1.size() << endl;    //输出的有效字符的个数,<<是标识字符

	cout . s1capacity()<< ; endl//返回的是空间大小,编译器自己存在扩容机制  //关于resize 和 reserve (重要)

	.

	s1resize(15);//这里会自动填充‘.      reserve
	s1(10);//什么事情都不做.     reserve
	s1(50);<<.   

	cout capacity s1()<<; //输出不是50, endlreturn  0
	; }int
main

如何访问字符呢?


各种插入删除 *** 作


( )s1(
{
	string "hello world ");s2(
	string "!!!!!!!!!!!!!!!!!" );+=;

	s1 //这里的作用是把s2追加到s1 s2<<    <<
	cout ; s1 += endl"#######"
	 
	s1 ; //这里是追加字符串<<   <<
	cout ; s1 s3 endl(


	string "i am a handsome boy");s4(
	string "you are a good girl");//s3.append(s4);      //类似于+=  ,s4追加到s3 的后面//cout << s3 << endl;

	//s3.append(s4,5);   //从第5个位置开始追加
	//cout << s3 << endl;

	.
	append

	s3(,5s4, 2);//从第5个位置开始追加,只追加2个<<   <<
	cout ; s3 //s3.append("!!!!!!!!!!!!");  //追加字符串 endl//cout << s3 << endl;

	.
	append

	s3("!!!!!!!!!!!!",3);//追加3个字符串<<  <<
	cout ; s3 return endl0
	; }int
main
一些零零散散比较重要的

string的习题
( )="hello world"

{

string a;=;

string bifa(

. c_stra()==.c_strb())<<"true" 

{

cout<<;}endlelse

<<

"false" cout<<;=endl;

string c=b""

c;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;=endl""

a;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;returnendl0

; }int

main

解析:string的拷贝构造和赋值重载都是深拷贝,c_str()返回的是指向的空间,那肯定都是不相等的

求下面的输出结果
int main()

{

string str(“Hello Bit.”);

str.reserve(111);

str.resize(5);

str.reserve(50);

cout<

return 0;

}
解析:resever调整空间大小,比原空间小,不做任何事情, 所以 5,111

看下面结果的输出,

( )="How are you?"

{

string strText ; =" "

string strSeparator ; ;int

string strResult=

0 size_pos ; int=

0 size_prev_pos ; while(

(=.size_posfind_first_ofstrText(,)strSeparator) size_pos!=:: ) string//从size_pos位置查找空格’ ‘字符返回下标npos=  .

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos//然后拿出strText从prepos的位置向后n个的字符<<    <<

cout" "strResult;=++

size_prev_pos ; }size_posif

(

!=.size_prev_pos size strText())=.

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos<<<<

cout" "strResult;}<<

;

coutreturnendl0

; }[+++]

[+++]

解析:请看注释,结果是 How are you?

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 436, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

文章目录

string类的简单概念理解

1,首先,标准库给我们提供了提供string类,使用的时候需要使用标准命名空间
using namespace std; 另外,它帮我们封装好了成员函数,和成员变量。
这样外面在解决问题的时候,我们可以直接调用早就写好的成员函数了。

    class string
{
	//构造函数
	//析构函数
	//........各种功能的函数  ,大佬已经帮我们写好了


private:
	char* _str;
	size_t capacity;
	size_t size;
};
C++文档网站

我们需要去网站里面去查看文档去学习
这个比较好,不混乱 ,早期用这个,推荐这个 : https://cplusplus.com/
这个是官方网站,比较混乱,但是更新的比较快,适合查看新语法:https://en.cppreference.com/w/

点开之后直接搜索string即可

先看看构造函数,析构函数,赋值重载

析构函数没什么,就是释放空间,对象的生命周期结束后自动调用。

#include 
using namespace std;

int main()
{
	string s1();          //无参构造函数,这是个匿名对象,生命周期只在这一行
	string s2("hello world");   //传字符串的构造函数
	string s3(s2);            //传同类型的构造函数
	cout << s3 << endl;
	
	string s4("haha");        
	s4 = s3;                   //同类型的赋值重载
	cout << s4 << endl;

	s4 = "24556";            //const char* 的赋值重载
	cout << s4 << endl;

	s4 = 'a';                //单个字符的赋值重载
	cout << s4 << endl;
	return 0;
}

看看迭代器iterator,如何去遍历

不用想的太复杂,就是类似于指针的东西,我们现在会用就可以了

int main()
{
	string s1("hello world");
	string::iterator it = s1.begin();   //这里的作用域 *** 作符,指定的是string的迭代器
	while (it != s1.end())          
	{
		cout << *it << " ";
		it++;
	}

	string::reverse_iterator rit = s1.rbegin();   //倒着遍历
	while (rit != s1.rend())
	{
		cout << *rit << " ";
		it++;
	}
	return 0;
}

capacity 关于容量的函数

int main()
{
	string s1("hello world");
	cout << s1.size() << endl;    //输出的有效字符的个数,<<是标识字符

	cout . s1capacity()<< ; endl//返回的是空间大小,编译器自己存在扩容机制  //关于resize 和 reserve (重要)

	.

	s1resize(15);//这里会自动填充‘.      reserve
	s1(10);//什么事情都不做.     reserve
	s1(50);<<.   

	cout capacity s1()<<; //输出不是50, endlreturn  0
	; }int
main

如何访问字符呢?


各种插入删除 *** 作


( )s1(
{
	string "hello world ");s2(
	string "!!!!!!!!!!!!!!!!!" );+=;

	s1 //这里的作用是把s2追加到s1 s2<<    <<
	cout ; s1 += endl"#######"
	 
	s1 ; //这里是追加字符串<<   <<
	cout ; s1 s3 endl(


	string "i am a handsome boy");s4(
	string "you are a good girl");//s3.append(s4);      //类似于+=  ,s4追加到s3 的后面//cout << s3 << endl;

	//s3.append(s4,5);   //从第5个位置开始追加
	//cout << s3 << endl;

	.
	append

	s3(,5s4, 2);//从第5个位置开始追加,只追加2个<<   <<
	cout ; s3 //s3.append("!!!!!!!!!!!!");  //追加字符串 endl//cout << s3 << endl;

	.
	append

	s3("!!!!!!!!!!!!",3);//追加3个字符串<<  <<
	cout ; s3 return endl0
	; }int
main
一些零零散散比较重要的

string的习题
( )="hello world"

{

string a;=;

string bifa(

. c_stra()==.c_strb())<<"true" 

{

cout<<;}endlelse

<<

"false" cout<<;=endl;

string c=b""

c;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;=endl""

a;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;returnendl0

; }int

main

解析:string的拷贝构造和赋值重载都是深拷贝,c_str()返回的是指向的空间,那肯定都是不相等的

求下面的输出结果
int main()

{

string str(“Hello Bit.”);

str.reserve(111);

str.resize(5);

str.reserve(50);

cout<

return 0;

}
解析:resever调整空间大小,比原空间小,不做任何事情, 所以 5,111

看下面结果的输出,

( )="How are you?"

{

string strText ; =" "

string strSeparator ; ;int

string strResult=

0 size_pos ; int=

0 size_prev_pos ; while(

(=.size_posfind_first_ofstrText(,)strSeparator) size_pos!=:: ) string//从size_pos位置查找空格’ ‘字符返回下标npos=  .

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos//然后拿出strText从prepos的位置向后n个的字符<<    <<

cout" "strResult;=++

size_prev_pos ; }size_posif

(

!=.size_prev_pos size strText())=.

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos<<<<

cout" "strResult;}<<

;

coutreturnendl0

; }

[+++]

解析:请看注释,结果是 How are you?

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
string类常见接口和一些习题_C_内存溢出

string类常见接口和一些习题

string类常见接口和一些习题,第1张

文章目录
    • string类的简单概念理解
    • C++文档网站
    • 先看看构造函数,析构函数,赋值重载
    • 看看迭代器iterator,如何去遍历
    • capacity 关于容量的函数
    • 如何访问字符呢?
    • 各种插入删除 *** 作
    • 一些零零散散比较重要的
    • string的习题

string类的简单概念理解

1,首先,标准库给我们提供了提供string类,使用的时候需要使用标准命名空间
using namespace std; 另外,它帮我们封装好了成员函数,和成员变量。
这样外面在解决问题的时候,我们可以直接调用早就写好的成员函数了。

    class string
{
	//构造函数
	//析构函数
	//........各种功能的函数  ,大佬已经帮我们写好了


private:
	char* _str;
	size_t capacity;
	size_t size;
};
C++文档网站

我们需要去网站里面去查看文档去学习
这个比较好,不混乱 ,早期用这个,推荐这个 : https://cplusplus.com/
这个是官方网站,比较混乱,但是更新的比较快,适合查看新语法:https://en.cppreference.com/w/

点开之后直接搜索string即可

先看看构造函数,析构函数,赋值重载

析构函数没什么,就是释放空间,对象的生命周期结束后自动调用。

#include 
using namespace std;

int main()
{
	string s1();          //无参构造函数,这是个匿名对象,生命周期只在这一行
	string s2("hello world");   //传字符串的构造函数
	string s3(s2);            //传同类型的构造函数
	cout << s3 << endl;
	
	string s4("haha");        
	s4 = s3;                   //同类型的赋值重载
	cout << s4 << endl;

	s4 = "24556";            //const char* 的赋值重载
	cout << s4 << endl;

	s4 = 'a';                //单个字符的赋值重载
	cout << s4 << endl;
	return 0;
}

看看迭代器iterator,如何去遍历

不用想的太复杂,就是类似于指针的东西,我们现在会用就可以了

int main()
{
	string s1("hello world");
	string::iterator it = s1.begin();   //这里的作用域 *** 作符,指定的是string的迭代器
	while (it != s1.end())          
	{
		cout << *it << " ";
		it++;
	}

	string::reverse_iterator rit = s1.rbegin();   //倒着遍历
	while (rit != s1.rend())
	{
		cout << *rit << " ";
		it++;
	}
	return 0;
}

capacity 关于容量的函数

int main()
{
	string s1("hello world");
	cout << s1.size() << endl;    //输出的有效字符的个数,<<是标识字符

	cout . s1capacity()<< ; endl//返回的是空间大小,编译器自己存在扩容机制  //关于resize 和 reserve (重要)

	.

	s1resize(15);//这里会自动填充‘.      reserve
	s1(10);//什么事情都不做.     reserve
	s1(50);<<.   

	cout capacity s1()<<; //输出不是50, endlreturn  0
	; }int
main

如何访问字符呢?


各种插入删除 *** 作


( )s1(
{
	string "hello world ");s2(
	string "!!!!!!!!!!!!!!!!!" );+=;

	s1 //这里的作用是把s2追加到s1 s2<<    <<
	cout ; s1 += endl"#######"
	 
	s1 ; //这里是追加字符串<<   <<
	cout ; s1 s3 endl(


	string "i am a handsome boy");s4(
	string "you are a good girl");//s3.append(s4);      //类似于+=  ,s4追加到s3 的后面//cout << s3 << endl;

	//s3.append(s4,5);   //从第5个位置开始追加
	//cout << s3 << endl;

	.
	append

	s3(,5s4, 2);//从第5个位置开始追加,只追加2个<<   <<
	cout ; s3 //s3.append("!!!!!!!!!!!!");  //追加字符串 endl//cout << s3 << endl;

	.
	append

	s3("!!!!!!!!!!!!",3);//追加3个字符串<<  <<
	cout ; s3 return endl0
	; }int
main
一些零零散散比较重要的

string的习题
( )="hello world"

{

string a;=;

string bifa(

. c_stra()==.c_strb())<<"true" 

{

cout<<;}endlelse

<<

"false" cout<<;=endl;

string c=b""

c;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;=endl""

a;if(

. c_stra()==.c_strb())<<"true"

{

cout<<;}endlelse

<<

"false" cout<<;returnendl0

; }int

main

解析:string的拷贝构造和赋值重载都是深拷贝,c_str()返回的是指向的空间,那肯定都是不相等的

求下面的输出结果
int main()

{

string str(“Hello Bit.”);

str.reserve(111);

str.resize(5);

str.reserve(50);

cout<

return 0;

}
解析:resever调整空间大小,比原空间小,不做任何事情, 所以 5,111

看下面结果的输出,

( )="How are you?"

{

string strText ; =" "

string strSeparator ; ;int

string strResult=

0 size_pos ; int=

0 size_prev_pos ; while(

(=.size_posfind_first_ofstrText(,)strSeparator) size_pos!=:: ) string//从size_pos位置查找空格’ ‘字符返回下标npos=  .

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos//然后拿出strText从prepos的位置向后n个的字符<<    <<

cout" "strResult;=++

size_prev_pos ; }size_posif

(

!=.size_prev_pos size strText())=.

{

strResult substr strText(,-size_prev_pos) size_pos;size_prev_pos<<<<

cout" "strResult;}<<

;

coutreturnendl0

; }


解析:请看注释,结果是 How are you?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1325046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存