#include <string> #include <iostream> using std::string; using std::cin; using std::cout; using std::endl; //string定义在命名空间std中 int main() {
/**************3.2.1 定义和初始化string*****************/ string s1; //默认初始化,S1是一个空字符串 string S2 = s1; //S2时S1的副本 string s3 = "hello lijun"; //S3是字面值hello lijun的副本 /*注意: 1,什么叫string? 可变长的字符序列 2,什么叫字面值? 3,字符串字面值结尾的空字符不会被赋给字符串 空字符是字符串的终止符尔不是字符序列的终止符 */ /*直接初始化和拷贝初始化 当初始值只有一个时使用直接初始化或拷贝初始化都是可以的 多值初始化做好用拷贝初始化*/ string s4(10, ‘a‘); //s4的内容是10和c //string s4(1,"hello lijun"); //错误 string s5(s4); //s4是s1的副本,与9 line类似 string s6("hello lijun"); //s3是字面值“hello lijun"的副本 //string s6(hello lijun); 错误 string s7 = string (10, ‘a‘); //显示的创建一个临时对象用于拷贝 /* 其效果等价于:string temp (10, ‘a‘) string s7 = temp; */
/*******************3.2.2 string对象上的操作**************/ //一个类除了要定义初始化方式外还需要定义对象上所能执行的操作。 //-------1读写操作----------- string s; cin >> s; cout << s << endl; //在执行读取操作时,string会自动忽略开头的空白(空格,换行,制表等) //并从第一个真正的字符开始读起,知道遇见下一个空白为止。 //返回左侧的运算符作为运算结果
//-------2读取未知数量的string对象----------- string word; while ((cin >> word) && (word != "END"))//自动以END作为结束标志符 cout << word << endl; //注意字符串中含有空格时的输出 //-------3使用getline 读取一整行----------- //-------empty和size的用法----------- //s.empty()根据string对象是否为空返回一个对应的bool变量 //s.zize()函数返回string的长度 //其实s.zize()返回的是string::size_type类型,这是一种新的类型 //string类及其它大多数标准库类型都定义了几种配套的类型 //这些配套类型体现了标准库类型的机器无关性 //所有用于存放string类的size函数返回值的变量都应该用string::size_type类型 //s.zize()返回的是unsigned类型的值,不可用int混用 string line; while (getline(cin, line, ‘#‘))//注意结束标志位 { if (!line.empty()) //只输出非空行 { cout << line << endl; } auto len = line.size(); cout << len; } return 0; }
时间: 2024-10-27 09:30:28