1.操作子boolalpha通知流将bool值解析为单词(true或false),代码如下:
2.可以将许多不是bool类型的值转换为bool类型,所有的字符串(包括空串)都是true;字符'\0'转换为false,所有其它字符都转换为true;如果流为错误状态,结果为false。
3.比较两个vector,从两个向量的第一个元素开始比较,如果一个元素小于另一个元素,那么该元素所在的vector小于另一个vector。如果一个短向量是另一个长向量的前缀,那么微不短向量小于长向量。如下:
4.字符串的比较规则如下:
#include <ios>
#include <iostream>
#include <ostream>
int main()
{
std::cout << "true=" << true << '\n';
std::cout << "false=" << false << '\n';
std::cout << std::boolalpha;
std::cout << "true=" << true << '\n';
std::cout << "false=" << false << '\n';
}
,结果为:
true=1
false=0
true=true
false=false
2.可以将许多不是bool类型的值转换为bool类型,所有的字符串(包括空串)都是true;字符'\0'转换为false,所有其它字符都转换为true;如果流为错误状态,结果为false。
#include <ios>
#include <iostream>
#include <ostream>
int main()
{
bool b;
std::cout << std::boolalpha;
b = false; std::cout << b << ' ';
b = true; std::cout << b << ' ';
b = false; std::cout << b << ' ';
b = true; std::cout << b << ' ';
b = 42; std::cout << b << ' ';
b = 3.1415926535897; std::cout << b << ' ';
b = 0; std::cout << b << ' ';
b = -0.0; std::cout << b << ' ';
b = -1; std::cout << b << ' ';
b = "1"; std::cout << b << ' ';
b = "0"; std::cout << b << ' ';
b = "false"; std::cout << b << ' ';
b = ""; std::cout << b << ' ';
b = '0'; std::cout << b << ' ';
b = '\0'; std::cout << b << ' ';
b = std::cout; std::cout << b << ' ';
b = std::cin; std::cout << b << ' ';
std::cout << '\n';
}
,结果为:
false true false true true true false false true true true true true true false true true
3.比较两个vector,从两个向量的第一个元素开始比较,如果一个元素小于另一个元素,那么该元素所在的vector小于另一个vector。如果一个短向量是另一个长向量的前缀,那么微不短向量小于长向量。如下:
#include <iostream>
#include <ostream>
#include <vector>
int main()
{
std::vector<int> a, b;
a.push_back(10);
a.push_back(20);
a.push_back(30);
b.push_back(10);
b.push_back(20);
b.push_back(30);
if (a != b) std::cout << "wrong: a != b\n";
if (a < b) std::cout << "wrong: a < b\n";
if (a > b) std::cout << "wrong: a > b\n";
if (a == b) std::cout << "okay: a == b\n";
if (a >= b) std::cout << "okay: a >= b\n";
if (a <= b) std::cout << "okay: a <= b\n";
a.push_back(40);
if (a != b) std::cout << "okay: a != b\n";
if (a < b) std::cout << "wrong: a < b\n";
if (a > b) std::cout << "okay: a > b\n";
if (a == b) std::cout << "wrong: a == b\n";
if (a >= b) std::cout << "okay: a >= b\n";
if (a <= b) std::cout << "wrong: a <= b\n";
b.push_back(42);
if (a != b) std::cout << "okay: a != b\n";
if (a < b) std::cout << "okay: a < b\n";
if (a > b) std::cout << "wrong: a > b\n";
if (a == b) std::cout << "wrong: a == b\n";
if (a >= b) std::cout << "wrong: a >= b\n";
if (a <= b) std::cout << "okay: a <= b\n";
}
,结果为:
okay: a == b
okay: a >= b
okay: a <= b
okay: a != b
okay: a > b
okay: a >= b
okay: a != b
okay: a < b
okay: a <= b
4.字符串的比较规则如下:
#include <iostream>
#include <ostream>
#include <string>
int main()
{
std::string a("abc"), b("abc");
if (a != b) std::cout << "wrong: abc != abc\n";
if (a < b) std::cout << "wrong: abc < abc\n";
if (a > b) std::cout << "wrong: abc > abc\n";
if (a == b) std::cout << "okay: abc == abc\n";
if (a >= b) std::cout << "okay: abc >= abc\n";
if (a <= b) std::cout << "okay: abc <= abc\n";
a.push_back('d');
if (a != b) std::cout << "okay: abcd != abc\n";
if (a < b) std::cout << "wrong: abcd < abc\n";
if (a > b) std::cout << "okay: abcd > abc\n";
if (a == b) std::cout << "wrong: abcd == abc\n";
if (a >= b) std::cout << "okay: abcd >= abc\n";
if (a <= b) std::cout << "wrong: abcd <= abc\n";
b.push_back('e');
if (a != b) std::cout << "okay: abcd != abce\n";
if (a < b) std::cout << "okay: abcd < abce\n";
if (a > b) std::cout << "wrong: abcd > abce\n";
if (a == b) std::cout << "wrong: abcd == abce\n";
if (a >= b) std::cout << "wrong: abcd >= abce\n";
if (a <= b) std::cout << "okay: abcd <= abce\n";
}
,结果为:
okay: abc == abc
okay: abc >= abc
okay: abc <= abc
okay: abcd != abc
okay: abcd > abc
okay: abcd >= abc
okay: abcd != abce
okay: abcd < abce
okay: abcd <= abce