如何检查字符串中是否有重复的负号?例如 --1
How to check a string for repeated negative signs? for example --1
我做了一个函数来告诉我我是否只有数字。
我尝试做-- ;
但这只会弄乱我的负数。
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
作为数字。
相关文章:
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 这是否符合C++标准:双响双响,例如!!(-0.0).
- 不同版本的编译器(例如GCC)是否会产生不同的性能?
- 检查两个数组是否相等?? 例如:{1,2,3,4,5} == {4,5,3,2,1}
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 是否可以直接将QString输入(例如)googletest的ADD_FAILURE()宏?
- 如何检测是否例如.T::is_transparent 是定义的?
- 如何检查字符串中是否有重复的负号?例如 --1
- 对于存储另一个类所需信息的类,例如其构造,是否有设计模式?
- 是否可以将"inf"分配给变量,例如 c++ 中的常规数值
- 当可以返回错误/异常时,从库中终止调用程序(例如,调用exit())是否总是错误的?
- 是否可以交换在 c++ 中作为函数 func(say) 中的参数传递的 const 向量的两个元素,例如:vector<int>func (const vector<int>&
- Rust 在索引时是否隐式创建映射条目,例如C++
- 模块名称是否驻留在单独的"name space"中,或者它们可能与例如变量名称发生冲突?
- Qt是否能够支持小缓冲区低延迟视频应用(例如实时流)
- Golang操纵函数中是否有一些方法,例如std :: bind在C 中
- 是否可以将指针传递给运算符,作为一个参数,例如指向函数的指针
- Python 3中是否有内置功能,例如C 中的GetChar()
- 在标准布局对象中进行指针运算(例如,使用偏移量)时,我们是否需要使用 std::launder?