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 ,cout,endl经过using声明之后,可以直接使用,不再需要加std::。
2、标准库string类型
string 类型支持长度可变的字符串。
程序需要使用string类型对象时,必须包含相关头文件,提供合适的using声明。
#include <string> using std::string;
string对象的定义和初始化
string s1; 默认构造函数,s1为空字符串
string s2(s1); s2为s1的副本
string s4(n,‘c’); s4为n个‘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 s1和s2相等返回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类型
string的size()成员函数返回的是string::size_type类型的值,它定义为与unsigned型具有相同的含义。
为了使用string类型定义的size_type类型,必须加上作用域操作符来说明使用的size_type类型是由string类定义的。
任何存储string的size操作结果的变量必须为string::size_type类型。特别地,不要把size的返回值赋值给int变量。
两个string对象相加就是两个字符串的的连接。
string 对象获取字符
string类型通过下标操作符([])来访问string对象中的单个字符。下标操作符需要取一个size_type类型的值,来标明要访问的字符位置。
String对象的下标从0开始,如果s是string对象且不为空,则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]='*';