习题3.6
解释string 类型的输入操作符和getline 函数分别如何处理空白字符。
【解答】
string 类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该 空白字符仍留在输入流中)。 getline 函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到 换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string 对象中)。
习题3.9
下列程序实现什么功能?实现合法吗?如果不合法,说明理由。
string s;
cout << s[0] << endl;
【解答】
该程序段输出string 对象s 所对应字符串的第一个字符。 实现不合法。因为s 是一个空字符串,其长度为0,因此s[0]是无效的。
注意,在一些编译器(如Microsoft Visual C++ .NET 2003)的实现中,该
程序段并不出现编译错误。
习题3.11
下面哪些vector 定义不正确? (a) vector< vector<int> > ivec; (b) vector<string