第三章 字符串、向量和数组

发布时间 2023-04-20 00:13:10作者: ETHERovo

c++11

第三章 字符串、向量和数组

第二章的数据类型是内置数据类型,直接由硬件实现;c++标准库实现了高级数据类型,并未硬件直接实现。vectorstring是由标准库实现的,而数组是内置类型,但是不够灵活。

3.1 命名空间的using声明

  • using
using std::cin;
  • 每个using语句只能声明名字空间的一个成员
  • 头文件不应该使用using声明,因为可能引起include该头文件的文件的命名冲突

3.2 标准库类型string

#include<string>
using std::string;

3.2.1 定义和初始化string对象

string s1;//默认初始化为空字符串
string s2(s1);//直接初始化,s2是s1的副本
string s2=s1;//拷贝初始化,s2是s1的副本
string s3("value");//直接初始化,s3是“value”的副本,不包含最后的空字符
string s3 = "value";//拷贝初始化,s3是“value”的副本,不包含最后的空字符
string s4(10,'c');//直接初始化,s4是10个连续的‘c’,第二个参数只能是char不能是string
string s4 = string(10,'c');//先创建一个临时变量,然后定义s4并初始化为该变量的副本,如下。相比直接初始化,并没有优势。
string temp(10,'c');
string s4 = temp;

3.2.2 string对象上的操作

  • 读写
int main()
{
  string s;
  cin >> s;//遇到空格停止
  cout << s <<endl;
  return 0;
}
  • 读取未知数量的string对象
int main()
{
  string s;
  while(cin>>s)
    cout<<s<<endl;
  return 0;
}
  • 使用getline读取一整行:为了读入空格使用getline,遇到换行符停止,换行符也会被读取但是不保存(被丢弃),如果一开始就是换行符则返回空string
int main()
{
  string line;
  while(getline(cin, line))
    cout<<line<<endl;
  return 0;
}
  • string的emptysize操作
while(getline(cin,line))
  if(!line.empty())
    cout<<line<<endl;

while(getline(cin,line))
  if(line.size()>80)
    cout<<line<<endl;