如何检查字符串中是否有重复的负号?例如 --1

How to check a string for repeated negative signs? for example --1

本文关键字:例如 是否 何检查 检查 字符串      更新时间:2023-10-16

我做了一个函数来告诉我我是否只有数字。

我尝试做-- ;但这只会弄乱我的负数。

bool isDigit (const std::string &str) {
return !(str.find_first_of("!@#$^&*()_=+abcdefghifklmnopqrst"
"uvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") == std::string::npos);
}

您可以使用strtol读取数字字符串并确定它们是否有效:

bool readNumber(const std::string& input, long& result) {
char* end;
result = strtol(input.c_str(), &end, 0);
return *end == 0;
}

如果input是整数字符串,这将返回true,并将整数值保存在result中。如果只需要检查字符串是否为整数,则可以忽略strtol的结果。

该函数将始终返回有效整数字符串的true,但如果超出该范围,result将被钳制为最小/最大long

std::size_t nextNonDigit (const std::string &str, std::size_t pos) {
return str.find_first_of(
"!@#$^&*()_=+abcdefghifklmnopqrst"
"uvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
"-",
pos
);
}
bool isDigit(const std::string& str) {
std::size_t number_minuses = 0;
for(auto next = nextNonDigit(str, 0); next != std::string::npos;next = nextNonDigit(str, next+1)) {
if (str[next] == '-') {
++number_minuses;
if (number_minuses > 1)
return false;
}
}
return true;
}

如果你想支持,s 或.s,或者将其限制在,s 之间的一个.或 3 个,或者你必须扩展它的任何内容。 此外,这允许001-333作为数字。

相关文章: