对C++中string字符串的认识
string的相关知识
一、字符串的定义
在C++中,字符串大多数时候用来指代string类。这时C++ STL中的一个类,包含了各种常用的字符串操作。定义方法为:
string var;
或string var(init_list);
或string var = init_value;
由于string为类,定义时实际上是定义了一个对象,而初始化方式也就决定了调用何种构造函数来进行构造。string的构造方法有很多,以最常用的方式举例:
string a;//定义一个空字符串。
string b=“test string”;//定义一个字符串并初始化为test string。
二、输入字符串的方式
(1)getchar()
- 接收一个字符,需要有 #include < string >
void Getchar()
{
char ch;
ch = getchar(); //不能写成 getchar(ch)
cout << "ch = " << ch << endl;
}
(2)gets()
- 接收一个字符串,可以接收空格并输出,需要有 #include < string >
void Gets()
{
char arr[20] = { 0 };
gets(arr); //不能写成 arr = gets()
printf("arr = %s\n", arr);
}
(3)cin >>
- 接受数字
void Cin1()
{
int a, b;
cin >> a >> b;
cout << "a - b = " << a - b << endl;
}
- 接受一个字符串,遇“空格”、“Tab”、“回车”都结束
void Cin2()
{
char arr[20];
cin >> arr;
cout << "arr: " << arr << endl;
}
(4)cin.get()
- cin.get(字符数组名,接收字符数)可接收一行字符串,可接收空格,自动接收一个 ‘\0’
- cin.get(字符变量名)可用来接收一个字符
void Cinget1()
{
char ch;
ch = cin.get();
//cin.get(ch);
cout << "ch = " << ch << endl;
}
三、字符串常用方法
(1)创建string对象
- 用字符数组value
char[] value ={"a","b","c","d"};
String str = new String(value);
//相当于String str = newString("abcd")
- 用字符数组以x开始的n个字符
char[] value ={"a","b","c","d"};
String str = new String(value, 1, 2);
//相当于String str = newString("bc");
(2)给string赋值
- 使用assign()函数
1,直接用另一个字符串赋值,如str2.assign(str1);即用str1给str2赋值.
2,用另一个字符串的一个子串赋值,如str3.assign(str1, 2, 3);
3,用一个字符串的前一段子串赋值,如str4.assign(“World”, 5);
4,用几个相同的字符,赋值,如str5.assign(10, ‘c’);
具体代码如下:
#include<iostream>
using namespace std;
int main()
{
string str1("honey");
string str2;
string str3;
string str4;
string str5;
str2.assign(str1);
str3.assign("girls", 4);
str4.assign(str1, 2, 3);
str5.assign(10, 'c');
cout<<str1<<endl;
cout<<str2<<endl;
cout<<str3<<endl;
cout<<str4<<endl;
cout<<str5<<endl;
system("pause");
return 0;
}
(3)string类的获取
- 获取字符串长度
String str = new String("honey");
int strlength = str.length();
- 获取字符串某一位置的字符
String str = new String("61honey");
char ch = str.charAt(4);//ch = n
- 获取字符串的子串
String str1 = newString("awesome");
String str2 = str1.substring(2);//str2 ="esome"
String str3 = str1.substring(2,5);//str3 ="eso"
(4)字符串中字符的大小写转换
- public String toLowerCase()
//所有字符转换成小写 - public String toUpperCase()
//所有字符转换成大写
String str = new String("PrettyGirl");
String str1 = str.toLowerCase();
//str1 = "prettygirl"
String str2 = str.toUpperCase();
//str2 = "PRETTYGIRL"
(5)除去字符串中的空格
String str = " pre tty ";
String str1 = str.trim();
int a = str.length();//a = 9
int b = str1.length();//b = 6
System.out.println(a+"\n"+b);