C++ Primer学习笔记6 标准库类型(命名空间的using声明、标准库string类型)

1、命名空间的using声明

std::cin 中用到了::操作符,该操作符为作用域操作符。它的含义是右操作数的名字可以在左操作数的作用域中找到。std::cin 的意思是cin在命名空间std中定义。

#include <iostream>
//using namespace std;
using std::cin;
using std::cout;
using std::endl;
int main()
{
	cout<<"enter two numbers:"<<endl;
	int v1,v2;
	cin>>v1>>v2;
	cout<<"the sum of "<<v1<<" and "<<v2<<" is "<<v1+v2;
	system("pause");
	return 0;
}

cin coutendl经过using声明之后,可以直接使用,不再需要加std::。

2、标准库string类型

string 类型支持长度可变的字符串。

程序需要使用string类型对象时,必须包含相关头文件,提供合适的using声明。

#include <string>
using std::string;

string对象的定义和初始化

string  s1;                   默认构造函数,s1为空字符串

string  s2s1);              s2s1的副本

string  s4n,‘c’);          s4n个‘c

string  s3(“value”);          s3初始化为字符串字面值

string对象的读写

可以用iostream标准库读写string对象:

a. 读取时忽略开头所有的空白字符

b. 读取字符直至再次遇到空白字符,读取终止。

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string s;
	cin>>s;
	cout<<s<<endl;
	system("pause");
	return 0;
}

输入“     hello world,输出为“hello

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string s,s1;
	cin>>s>>s1;
	cout<<s<<s1<<endl;        //两字符串连接
	cout<<s<<" "<<s1<<endl;    //两字符串中间有空格
	system("pause");
	return 0;
}

在控制台输入s的值后按空过再输入s1.

getline读取整行文本

getline 函数有两个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包含换行符。和输入操作符不一样的是getline并不忽略开头的换行符。只要getline遇到换行符就停止输入并返回。

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string line;
	while(getline(cin,line))
		cout<<line<<endl;

	system("pause");
	return 0;
}

string对象的操作

S.empty();                    s如果是空字符串返回true,否则返回false

S.size();                      返回s中字符的个数

S[n]                         返回s中位置为n的字符,从0开始计数

S1+s2                        字符串连接

S1=s2                        s1的内容替换为s2的副本

S1==s2                       s1s2相等返回true,否则返回false

!=,<,>                        保持原来含义

 

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string line("an egg");             //size为6
	string line1("an egg\n");          //size为7
	string line2("anegg");            //size为5
	cout<<line.size()<<endl<<line1.size()<<endl<<line2.size();

	system("pause");
	return 0;
}

string::size_type类型

    stringsize()成员函数返回的是string::size_type类型的值,它定义为与unsigned型具有相同的含义。

    为了使用string类型定义的size_type类型,必须加上作用域操作符来说明使用的size_type类型是由string类定义的。

    任何存储stringsize操作结果的变量必须为string::size_type类型。特别地,不要把size的返回值赋值给int变量。

两个string对象相加就是两个字符串的的连接。

string 对象获取字符

    string类型通过下标操作符([])来访问string对象中的单个字符。下标操作符需要取一个size_type类型的值,来标明要访问的字符位置。

    String对象的下标从0开始,如果sstring对象且不为空,则s[0]就是字符串的第一个字符,s[s.size()-1]表示s的最后一个字符。

    引用下标时如果超出下标作用范围就会引起溢出错误。

    用下标操作符分别取出string对象的每个字符

#include <iostream>
#include <string>
//using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
	string line("hello ");             //size为6
	for(string::size_type ix=0;ix!=line.size();++ix)
	cout<<line[ix]<<endl;

	system("pause");
	return 0;
}

下标可用作左操作符,把每个字符置为*

for(string::size_type ix=0;ix!=line.size();++ix)
line[ix]='*';






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值