for、while、do while循环语句另外还有if和switch选择语句。另外重点是cin是如何处理字符输入的。
一、字符串的比较
1、C-风格的字符串的比较
strcmp(word,"book");需要包含头文件<cstring>;当word大于"book"时,结果大于0;
2、string类字符串的比较
str1 > str2; str1 < str2; str1 == str2; 直接用关系符来比较,string类实现了关系符的重载。
二、循环和文本输入
1、使用原始的cin进行输入
如果程序使用循环来读取来自键盘的文本输入,则必须要知道如何停止读入。第一种方法,是使用一个特殊字符,将其作为停止标记。
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters;Enter # to quit:\n";
cin >> ch;
while(ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
cin.get();
cin.get();
return 0;
}
总结:读取数据时,cin将忽略空格和换行符,因此输入中的空格没有被回显,也没有包含在计数中。
发送给cin的输入被缓冲,这意味着只有在用户按下回车键之后,它输入的内容才会被发送给程序。
2、使用cin.get(char)进行补救上一个程序中不能读取空格和换行符
成员函数cin.get(ch)可以读取空格、制表符和换行符,它读取一个字符,并将该值赋给ch。
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters;Enter # to quit:\n";
//cin >> ch;//改动的地方
cin.get(ch);//改动的地方
while(ch != '#')
{
cout << ch;
++count;
cin.get(ch);//改动的地方
}
cout << endl << count << " characters read\n";
cin.get();
cin.get();
return 0;
}
3、使用哪一个cin.get()
cin.get(name,arSize).get() 等价于 cin.get(name,arSize); cin.get()
第一个版本的cin.get(char *, int )
第二个版本的cin.get()无参数
第三个版本的cin.get(char) 接收一个char参数,返回的是一个cin对象。
第四个版本的cin.get()可以这样使用,ch = cin.get();类似于cout.put(ch)来显示字符 ;使用例子while( (ch = cin.get()) != EOF)
4、文件尾条件
检测文件尾(EOF)。很多操作系统都允许通过键盘来模拟文件尾条件,在UNIX中,可以在行首按下Ctrl+D来实现;在Windows命令提示符模式下,可以在任意位置按下Ctrl+Z和Enter来实现。
检测到文件尾(EOF)后,cin将两位(eofbit和failbit)都设置为1。可以通过成员函数eof()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回true,否则返回false。如果failbit被设置为1,则fail()返回true,否则返回false。
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters;Enter # to quit:\n";
//cin >> ch;
cin.get(ch);
while(cin.fail() == false)//改动的地方
{
cout << ch;
++count;
cin.get(ch);
}
cout << endl << count << " characters read\n";
while(1);
return 0;
}