1. 用strcmp()测试字符串是否相等
- 如果str1和str2相等,则下列表达式为true
strcmp(str1, str2) == 0
- 如果str1和str2不相等,则下列表达式为true
strcmp(str1, str2) != 0
strcmp(str1, str2)
2. 循环文本输入
2.1 使用原始cin进行输入
int main()
{
char ch;
int count = 0;
cin >> ch;
while(ch != '#')
{
cout << ch;
count++;
cin>>ch;
}
cout << count;
system("pause");
}
|
发送给cin的输入被缓冲,只有在用户按下enter键后,输入的内容才会发送给程序
2.2 使用cin.get(char)
cin.get(ch)读取输入中的下一个字符,包括空格、制表符、换行符,解决了2.1中cin忽略空格的问题
|
2.3 EOF
检测到文件尾EOF后,cin将eofbit和failbit都设置为1,cin.eof()返回true。如果eof或failbit设置为1,则cin.fail()返回true
int main()
{
char ch;
int count = 0;
cin.get(ch);
while(cin.fail() == false)
{
cout << ch;
count++;
cin.get(ch);
}
cout << count;
system("pause");
}
|
2.4 常见的做法
cin.get(ch)返回一个cin对象,cin出现在需要bool值的地方时,istream类提供了将istream对象转换为bool值得函数,因此可简化为
int main()
{
char ch;
int count = 0;
while(cin.get(ch))
{
cout << ch; // 或cout.put(ch);
count++;
}
cout << count;
system("pause");
}
|
cin.get()返回输入中的下一个字符(将字符编码作为int值返回)而不是cin对象,ch = cin.get()
2.5 EOF是int类型,所以与EOF做比较需要定义ch为int型,在输出时有时需要强制转换成char
int main()
{
int ch;
int count = 0;
while((ch = cin.get()) != EOF)
{
cout.put((char)ch);
count++;
}
cout << count;
system("pause");
}
|