constchar*用一个字符测试相等性
const char * testing equality with a character
如果"toParse"中只有一个字符,并且字符是"+"或"0",我想返回"头奖"。做这件事最优雅的方法是什么?我试过了,但显然它不起作用,因为它总是因为未知的原因返回"头奖"。
char* ParseNRZI::parse(const char* toParse){
if (toParse=="+"||toParse=="0")
return "jackpot";
}
如果将C风格指针与字符进行比较,请使用strcmp
char* ParseNRZI::parse(const char* toParse)
{
if (strcmp(toParse, "+") == 0 ||
strcmp(toParse, "0") == 0)
{
return "jackpot";
}
return "something else";
}
或者,如果你使用std::string
,你可以自由使用operator==
std::string ParseNRZI::parse(const std::string& toParse)
{
if (toParse == "+" ||
toParse == "0")
{
return std::string("jackpot");
}
return std::string("something else");
}
从设计的角度来看,您需要的是一个检查函数,而不是一个真正的解析函数。然后您可以将函数重写为:
bool isJackpot(const std::string& value)
{
if (toParse == "+" ||
toParse == "0")
{
return true;
}
return false;
}
它可以简化为:
bool isJackpot(const std::string& value)
{
return value.find_first_of("0+") != std::string::npos;
}
注意:您的函数并不总是在所有分支中返回char*
,当toParse
不是+
或0
时,它将调用未定义的行为。当函数返回类型不是void
时,请确保所有函数分支都返回一个值。
const char* ParseNRZI::parse(const char* toParse) const
{
if (( toParse != 0 ) &&
( toParse[0] == '+' || toParse[0] == '0' ) &&
( toParse[1] == 0 )
)
return "jackpot";
return "";
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 谷歌测试:无法从字符数组创建字符串
- 测试字符串是数字还是字符
- 为什么在我的测试程序中,从字符缓冲区读取一个int时,"std::copy"5x(!)比"
- 如何仅测试字符数组的字母(包括空格)
- 使用字符指针测试条件
- 如何在提升单元测试中比较字符*与字符串
- 如何测试"binary"或未设置的字符*?
- constchar*用一个字符测试相等性
- microsoftvisualc++如何存储有符号字符以及如何测试有符号字符中的单个位
- c++ cin.ignore忽略空格、数字和字符来测试回文
- Qt 5构建错误:测试表达式后的额外字符
- ostream << istream 并在空文件上测试 EOF,从 istream 获取字符的替代方法
- c++测试字符串的最后一个字符
- if语句-测试字符串或字符的大写,小写和数字
- 测试字符串中的空格字符
- 对ASCII字符的哈希冲突进行测试
- c++对cstring数组中特殊字符的测试