chapter 3 命名空间的using声明,标准库类型string
2018-03-16
3.1 使用恰当的using声明重做1.4.1节和2.6.2节的练习;
using namespace std;
或者:
using std::cin; using std::cout; using std::endl;
命名空间的using使用
1 #include<iostream> 2 using std::cin; 3 int main() 4 { 5 int i; 6 cin >> i; 7 //cout << i;//错误,没有对应的using声明 8 std::cout << i; 9 return 0; 10 }
读取未知数量的string对象
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 string word; 6 while(cin >> word) 7 cout << word << endl; 8 return 0; 9 }
使用getline读取一整行
1 /* 2 getline函数的参数是一个输入流和一个string对象, 3 函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了), 4 然后把所读的内容存入到那个string对象中去(注意不存换行符) 5 一遇到换行符就结束读取操作 6 */ 7 #include<iostream> 8 using namespace std; 9 int main() 10 { 11 string line; 12 //每次读取一行,直至到达文件末尾 13 14 while(getline(cin,line)) 15 cout << line <<endl; 16 return 0; 17 }
string的empty和size操作
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 string line; 6 while(getline(cin,line)) 7 if(!line.empty()) 8 cout << line << endl; 9 return 0; 10 }
size函数
1 //每次只读取一整行,输出其中超过80个字符的行 2 #include<iostream> 3 using namespace std; 4 int main() 5 { 6 string line; 7 while(getline(cin,line)) 8 if(line.size() > 80) 9 cout << line << endl; 10 return 0; 11 }
string::size_type是一个无符号类型的值,而且能够存放下任何string对象的大小,所有用于存放string类的size函数返回值的变量,都应该是string::size_type类型的。
3.2 编写一个程序从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词。
程序1如上 程序二:
1 #include<iostream> 2 #include<string> 3 using std::cin; 4 using std::cout; 5 using std::endl; 6 using std::string; 7 int main() 8 { 9 string word; 10 while(cin >> word) 11 { 12 cout << word << endl; 13 } 14 return 0; 15 }
3.3 请说明string类的输入运算符和getline函数分别是如何处理空白字符的。
string:从第一个非空字符开始读,知道遇到下一个空白字符。
getline: 空白字符也会读,遇到换行符就结束。
3.4 编写一段程序读入两个字符串,比较其是否相等并输出结果。如果不相等,输出较大的那个字符串。改写上述程序,比较输入的两个字符串是否等长,如果不等长,输出长度较大的那个字符串。
1 #include<iostream> 2 #include<string> 3 using std::cin; 4 using std::cout; 5 using std::endl; 6 using std::string; 7 int main() 8 { 9 string s1, s2; 10 cin >> s1; 11 cin >> s2; 12 if(s1 == s2) 13 cout << "s1" << s1 << "s2" << s2; 14 if(s1 > s2) 15 cout << s1 << endl; 16 if(s1 < s2) 17 cout << s2 << endl; 18 return 0; 19 }
3.5 编写一段程序从标准输入中读入多个字符串并将它们连接在一起,输出连接成的大字符串。然后修改上述程序,用空格把输入的多个字符串分隔开来。
1 #include<iostream> 2 #include<string> 3 using std::cin; 4 using std::cout; 5 using std::endl; 6 using std::string; 7 int main() 8 { 9 string sum; 10 string s; 11 while(cin >> s) 12 sum += s; 13 cout << sum << endl; 14 return 0; 15 }
#include<iostream> #include<string> using std::cin; using std::cout; using std::endl; using std::string; int main() { string s; string sum; while(cin >> s) sum = sum + s + " "; cout << sum; return 0; }
未完待续,明天加油!