C++ .1

C++(图片后面慢慢补,本地word找不到了,因为不小心分区覆盖了。。用软件找回需要几百块。。想想不值得。。。)

一、string类型变量构造赋值方法

1、构造


(1)       用等号直接赋值S0

(2)       定义一个空白变量S1

(3)       定义一个新变量S2,内容完全等于S0

(4)       定义一个新变量S3,内容是S0从第八个字符开始的三个字符

(5)       定义一个新变量S4,用括号赋值(和(1)作用效果一样,只不过过使用()来赋)

(6)       定义一个新变量S5,内容是””里面的前12个字符

(7)       定义一个新变量S6,内容是n=10个相同字符’x’

总体展示:

2、访问



因为string存在[ ]用法,所以可以用访问数组元素的方法来访问字符串。

例如string  A = “ab cd ef ghijk.”

那么A[0]=’a’ ,         A[1]=’b’ ,        A[2]=’ ‘ .

上图就是遍历输出字符串str,输出结果就是“hello world”。后面又输出数组的下标为6的元素,即第七个元素‘w’。

3、插入

图示用法:

 

字符串变量名.insert(位置,内容(或者定义好的字符串变量地址(名字)))

str4字符串中从下标6开始插入str3的下标0开始的7个字符的内容

 str4字符串中从下标13开始插入内容"to be"
 str4字符串中从下标19开始插入str2字符串

4、删除

Str4内容:to be or not to be that is a question

 

只有两种:

第一种:从某个下标(图中是19)开始及其后面全部丢弃。

第二种:从某个下标(图中是0)开始的n个字符(图中是9)删掉。

 

5、清空

.clear()函数。清空后str4里面就无内容了

6、运算

1)加法(字符串的拼接)

2)比较(用ASCII码从第一个字符开始进行字典比较)

 

7、常用函数

1、 变量名.size()返回字符串长度(.size())

 

2在字符串中寻找子串并返回子串第一个字符下标(.find())

两张图中:第二行加的10都是指定从哪个位置开始往后找


找不到就返回-1

 

3返回子串(.substr()

分别是:

13下标开始返回后面的所有字符形成的子串;

13下标开始返回后面的3个字符形成的子串。

 

4头文件:

1String.h = cstring ,都是C语言里的

2stringC++里的针对字符串这个类的,直接输入输出的话只能用cin,cout。不能用scanf,printf因为这两个是C的,无法用于C++特有的string类的输入输出必须改造一下字符串变量才行。

例:
string a;
scanf("%s",a);
printf("%s",a);
这样不行,会报错。那么怎么解决这个问题呢?

很简单,只需要在变量后加一个“.c_str()”就行了。
具体代码段如下:

string a;
scanf("%s",a.c_str());
printf("%s",a.c_str());                                                                         


这是因为通过string类的c_str()函数能够把string对象转换成c中的字符串的样式。

 

C/C++关于字符串输入输出空格问题总结

1cin

针对数组字符串,cin遇到空格或回车键停止,只能输入没有空格的字符串,当输入中含有空格,则只能输出空格之前的字符;并且cin输入时会自动判断结尾,所以可以cin>>string1>>string2;这样同时输入多个字符串。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    char a[100];
	cin>>a;    
	cout<<a<<endl;
	return 0;
}

    当输入:hello world 时,遇到回车键输出:hello

2gets()

针对数组字符串,遇到回车键结束(有时与getchar()配合使用);
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    char a[100];
	gets(a);
	cout<<a<<endl;
	return 0;
}     

    当输入:hello world 时,遇到回车键输出:hello world

3cin.get()

针对数组字符串,可以接收空格,遇到回车键结束(有时与getchar()配合使用);
#include<iostream>
using namespace std;
int main()
{
    char a[100];
	cin.get(a,100);
	cout<<a<<endl;
	return 0;
}     

       当输入:hello world 时,遇到回车键输出:hello world

4getline()

针对string类型,可以接收空格,遇到回车键结束(有时与getchar()配合使用);
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a;
	getline(cin,a);
	cout<<a<<endl;
	return 0;
}

    当输入:hello world 时,遇到回车键输出:hello world

5cin.getline()

cin.getline()函数与cin.get()函数类似,可以接收空格,遇到回车键结束(有时与getchar()配合使用);cin.getline()是针对数组字符串的,以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止
#include<iostream>
using namespace std;
int main()
{
	char a[100];
	cin.getline(a,100);
	cout<<a<<endl;
	return 0;
}

       当输入:hello world 时,遇到回车键输出:hello world

6scanf遇到空格或者回车键结束(有时与getchar()配合使用);
#include <iostream>
using namespace std;
int main()
{
	char a[20];
	scanf("%s",a);
	puts(a);
	return 0;
}

    当输入:hello world 时,遇到回车键输出:hello

7)让scanf可以接收空格,遇到回车键结束(有时与getchar()配合使用);

这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。
#include <iostream>
using namespace std;
int main()
{
	char a[100];
	scanf("%[^\n]",a);
	puts(a);
	return 0;
}


    当输入:hello world 时,遇到回车键输出:hello world

7-2、要加getchar() 的;

 

#include <iostream>
using namespace std;
int main()
{
	int n;
	char a[100];
	cin>>n;
	getchar();//吸收换行符,一定要加 
	for(int i=0;i<n;i++)
		scanf("%[^\n]",a);
	puts(a);
	return 0;
}


    输入:11

    hello world

    输出:hello world

PS)上述原文:https://blog.csdn.net/qq_41555192/article/details/82532458

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ASCII码对照表




#include<cstdio>

#include<string>

#include<iostream>

using namespace std;

 

全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务