C++ 的string类学习

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

1、构造

C++ 的string类学习_第1张图片

(1)       用等号直接赋值S0

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

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

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

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

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

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

总体展示:

C++ 的string类学习_第2张图片

2、访问

C++ 的string类学习_第3张图片

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

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

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

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

3、插入

C++ 的string类学习_第4张图片

图示用法:

字符串变量名.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)加法(字符串的拼接)

C++ 的string类学习_第5张图片

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

C++ 的string类学习_第6张图片

7、常用函数

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

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

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

找不到就返回-1

3返回子串(.substr())

分别是:

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

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

4头文件:

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

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

例:

1

2

3

string a;

scanf("%s",a);

printf("%s",a);

这样不行,会报错。那么怎么解决这个问题呢?

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

1

2

3

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;这样同时输入多个字符串。

1

2

3

4

5

6

7

8

9

10

#include

#include

using namespace std;

int main()

{

    char a[100];

    cin>>a;    

    cout<

    return 0;

}

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

2gets()

针对数组字符串,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

10

#include

#include

using namespace std;

int main()

{

    char a[100];

    gets(a);

    cout<

    return 0;

}     

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

3cin.get()

针对数组字符串,可以接收空格,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

#include

using namespace std;

int main()

{

    char a[100];

    cin.get(a,100);

    cout<

    return 0;

}     

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

4getline()

针对string类型,可以接收空格,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

10

#include

#include

using namespace std;

int main()

{

    string a;

    getline(cin,a);

    cout<

    return 0;

}

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

5cin.getline()

cin.getline()函数与cin.get()函数类似,可以接收空格,遇到回车键结束(有时与getchar()配合使用);cin.getline()是针对数组字符串的,以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止

1

2

3

4

5

6

7

8

9

#include

using namespace std;

int main()

{

    char a[100];

    cin.getline(a,100);

    cout<

    return 0;

}

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

6scanf遇到空格或者回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

#include 

using namespace std;

int main()

{

    char a[20];

    scanf("%s",a);

    puts(a);

    return 0;

}

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

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

这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。

1

2

3

4

5

6

7

8

9

#include 

using namespace std;

int main()

{

    char a[100];

    scanf("%[^\n]",a);

    puts(a);

    return 0;

}

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

7-2、要加getchar() 的;

1

2

3

4

5

6

7

8

9

10

11

12

13

#include 

using namespace std;

int main()

{

    int n;

    char a[100];

    cin>>n;

    getchar();//吸收换行符,一定要加 

    for(int i=0;i

        scanf("%[^\n]",a);

    puts(a);

    return 0;

}

    输入:11

    hello world

    输出:hello world;

PS)C/C++关于字符串输入输出空格问题总结原文:C/C++关于字符串输入输出空格问题总结_qq_41555192yl的博客-CSDN博客_c 输入空格

 

 







ASCII码对照表

C++ 的string类学习_第7张图片

C++常用开头:

#include

#include

#include

using namespace std;

你可能感兴趣的:(笔记,c++,学习)