C++中字符数组用char str[]可以用来表示一个字符串。
(1) 数组的大小和字符串的长度。
数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志。当然对于未初始化的也补’\0’.
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[11] = "I am happy"; // 系统会自动补上'\0'空字符作为结束标志,,未有初始化的也补'\0'
//char str[10] = "I am happy"; // 出错 系统自动补上'\0' 此时字符数组长度不够
//char str[13] = "I am happy"; // 后面未有初始化的也补上'\0' 为 I am happy\0\0\0
if(str[10] == '\0')
{
cout << "hello world!!" << endl;
}
cin >> str; // 输入输出
cout << str << endl;
return 0;
}
(2)getline()
getline函数可以读取文本或者输入流的一行,此时包括前面输入的空格,只到回车换行才结束
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
ifstream in("E:\\algorithmZack\\testString\\input.txt");
if(!in)
{
cerr << "some errors happened";
return -1;
}
string str;
while(getline(in, str)) /// getline 从文件input.txt中按行读取文件
// while(getline(cin, str)) // 从输入流中按行读取 不包括换行符
{
cout << str << endl;
}
return 0;
}
(3)比较,连接,赋值,实际长度用函数strcmp, strcat, strcpy,strlen
字符串string
(1)String可以看做一个类库,需要有包含头文件#include <string>.
操作包括:连接(+=,append) 赋值(=, assign) 比较(>=,compare) 查找(find)
替换(replace) 删除(erase) 插入(insert) 字串(substring) 交换(swap)
特性(length sizec_str) 正反向迭代器(interatorreverse_iterator)
其中使用append,assign,compare的好处在于参数可以为字符数组