1.Switch case 语句的条件(只能为常量表达式)
解决措施:使用if else语句
2.判断一个字符是否为数字
判断字符是否为数字时,使用了isdigit
函数,但该函数是用于判断一个字符是否为0-9之间的数字字符。在代码中,应该使用isdigit(str[i])
而不是isdigit(str)
,以检查字符串中每个字符是否是数字。
3.c++获取数组长度
sizeof(Keyword) / sizeof(Keyword[0])
4.如何用输入流对象实现自定义的分割逻辑呢?比如将“int i=3;”自动分割为:int,i,=,3,;
如果你想要自定义分割逻辑,将字符串 "int i=3;" 分割成 "int", "i", "=", "3" 和 ";" 这些部分,你可以使用 `std::stringstream` 来创建输入流对象,并结合使用 `std::getline` 函数指定自定义的分隔符来完成分割操作。
下面是一个示例代码,展示了如何按照指定的分隔符将字符串分割为多个部分:
```cpp
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string sentence = "int i=3;";
std::istringstream iss(sentence);
std::string part;
while (std::getline(iss, part, ' ') || std::getline(iss, part, '=')
|| std::getline(iss, part, ';')) {
std::cout << part << std::endl;
}
return 0;
}
```
在上述代码中,我们首先创建了一个 `std::istringstream` 对象 `iss`,并将字符串 "int i=3;" 作为输入数据。然后,通过使用多次 `std::getline` 函数并指定不同的分隔符(空格、等号和分号),在循环中逐个提取并打印出了分割后的部分。
在每次 `std::getline` 调用时,我们将分隔符作为第三个参数传递给函数。函数会将输入流 `iss` 中的数据按照指定的分隔符进行分割,并将每个部分存储到字符串 `part` 中。
需要注意的是,`std::getline` 函数会返回一个输入流对象。在条件表达式中的 `||` 运算符将多个 `getline` 调用链接在一起,只要其中之一成功进行了分割操作,就会进入循环体中。
通过这种方式,你可以灵活地定义自己的分割逻辑,并按照自定义的规则提取字符串中的部分。你可以根据需要添加更多的 `std::getline` 调用来处理更多的分割情况。