面试题答案
一键面试C++ 17 引入的新特性
C++ 17引入了switch
语句的constexpr if
特性以及std::string_view
,使得可以处理更多类型作为switch
的参数,包括字符串类型。std::string_view
是一个轻量级的、非拥有式的字符串视图,它提供了对字符串内容的高效访问,并且可以在编译期计算其哈希值,这对于switch
语句处理字符串类型至关重要。
示例代码
#include <iostream>
#include <string_view>
int main() {
std::string_view str = "world";
switch (str) {
case std::string_view("hello"):
std::cout << "Hello case" << std::endl;
break;
case std::string_view("world"):
std::cout << "World case" << std::endl;
break;
default:
std::cout << "Default case" << std::endl;
break;
}
return 0;
}
在上述代码中,通过std::string_view
将字符串以视图的形式传递给switch
语句,编译器可以在编译期计算std::string_view
的哈希值,从而实现对字符串类型的switch
分支判断。