string
1、string变量定义和初始化
程序:
#include<iostream>
#include<string>
#include<windows.h>
using namespace std;
int main() {
// 1、使用字面常量初始化变量
string str1 = "abcd";
string str2("abcd");
cout << str1 << " " << str2 << endl;
// 2、使用变量来初始化另一个变量
string str3 = str1;
string str4(str1);
cout << str3 << " " << str4 << endl;
// 3、特殊用法
string str5(8, 'a');
cout << str5 << endl;
system("pause");
return 0;
}
结果:
abcd abcd
abcd abcd
aaaaaaaa
请按任意键继续. . .
2、string.size、string.length、string.empty、getline
程序:
#include<iostream>
#include<windows.h>
#include<string>
using namespace std;
int main() {
string str;
getline(cin, str); // 读取一行
// 1、判断string变量是否为空
if (str.empty()) {
cout << "请不要输入空字符串!" << endl;
}
// 2、测量string变量大小str.size和str.length作用相同,strlen(char*)用于测量字符数组长度
cout << str.size() << " " << str.length() << endl;
system("pause");
return 0;
}
结果:
我 哎 你
8 8
请按任意键继续. . .
3、string类型字符串的比较
string类型变量可以直接进行比较。从字符串第一字符开始比较,直到遇到不相等的字符为止。
C语言字符数组比较需要借助strcmp函数(相等返回0),比较方法和string原理一样,都是逐字符比较。
比较运算符:>、 >=、 <、 <=、 ==、!=
“12” > “120” 假,最后一个字符0比前一个字符串的\0结束符大(逻辑上理解后面多个字符肯定比前一个没有字符的大)
“19” > “12346” 真,前一个字符串的字符9大于后面字符串的2,该字符比较完毕以后结束
“2” > “19999” 真,前一个字符串的字符2大于后面字符串的1,该字符比较完毕以后结束
“123”== “1230” 假,最后一个字符0比前一个字符串的\0结束符大(逻辑上理解后面多个字符肯定比前一个没有字符的大)
4、使用下标方式访问string类型字符串的字符
程序:
#include<iostream>
#include<windows.h>
#include<string>
using namespace std;
int main() {
string str = "abcd";
str[0] = '1'; // 注意string类型并不是数组,不推荐这种用法
cout << str << endl;
system("pause");
return 0;
}
结果:
1bcd
请按任意键继续. . .
5、string转char
string.c_str();
char
1、strcpy设置字符数组的值
在C+11标准中推荐使用strcpy_s
函数原形:
strcpy:char *strcpy( char *restrict dest, const char *restrict src ); (since C99) strcpy_s:errno_t strcpy_s(char *restrict dest, rsize_t destsz, const char *restrict src); (2) (since C11)
#include <iostream>
#include<string>
#include <windows.h>
using namespace std;
int main() {
char str[15];
strcpy_s(str, 15, "我爱你"); // 快速设置str字符数组内容
cout << str << endl;
system("pause");
return 0;
}
结果:
我爱你
请按任意键继续. . .
未完待续!