看了那帖子讨论的很激烈,也想说两句。
先说两句人人都知道的大道理,我认为任何事情都不能一概而论,一棍子打死,要具体问题具体分析,那篇帖子在没有任何背景条件下讨论“验证String是不是整数,用异常作判断”是否可行,争论不休,实在没多大意思。
首先,我先申明,大多数情况下我也不赞成用异常来判断正常逻辑,
但是,试想下面这种情况,用异常作判断String是不是整数是否反而比其他方法效率更高?
假设
1.我不仅要验证一个String是否是数字,还必须在它是数字的时候转成int型数据
2.我要验证的字符串是一个手机号码,这个字符串是其他系统传过来的(理论上其他系统对此字符串是否为数字已经做了验证),也就是说这个字符串不是数字的可能性几乎没有,即时有也很小,万分之一?十万分之一? 不管,为了自己系统的完整性,我还得再验证一遍。
这时,一种方法是,先用其他方法验证一下此字符串是否为数字,再将此字符串用parseInteger转成数字;
另一种方法是,不管三七二十一先用parseInteger转,顺便通过异常判断是否为数字。
我不说大家也应该知道那种方法快,而且应该快的不是一点点,因为异常几乎不会发生。
所以我认为,具体问题,具体分析,不能一概而论,人云亦云。
分享到:
相关推荐
通过这些测试,我们可以验证`format`函数是否能正确处理空字符串、包含占位符的字符串、以及不同类型的数据。 在C++中,有两种常见的字符串格式化方法: 1. **使用`std::stringstream`**:这是C++标准库提供的一个...
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
在本示例中,我们关注的是如何判断一个字符串是否表示一个整数。这个问题在处理用户输入或者解析数据时非常常见,因为用户可能会输入各种各样的值,包括整数、浮点数、非数字字符等。 Delphi 是一种基于 Pascal ...
在“C++ 17:string_view转换为整数类型”这一主题中,我们主要探讨如何使用Boost Spirit Qi库将`string_view`对象转换为整数类型。 Boost Spirit Qi是Boost库的一部分,它是一个强大的解析库,允许程序员用C++编写...
### C++中`std::string`类的使用详解 #### 一、引言 在C++编程语言中,`std::string`类是处理文本数据的核心工具之一。它提供了丰富的功能,使得字符串的操作变得简单而高效。本文将详细介绍`std::string`类中的...
在Python中,我们可以直接用内置的`str()`函数将整数转换为字符串,然后使用`count()`方法来计算"0"的出现次数。例如: ```python def count_zeros(num): return str(num).count('0') ``` **Java**: 在Java中,...
6. **比较字符串**:`compare()`方法可以进行字符串之间的比较,返回值可以用来判断字符串是否相等或大小关系。 7. **拷贝和赋值**:`copy()`用于将字符串的一部分拷贝到字符数组,`assign()`用于给字符串赋新值。 ...
实现该功能可使用string的find_first_not_of,和find_last_not_of方法,具体实现带如下: 代码如下:#include #include <string> std::string& trim(std::string &); int main() { std::string s = ” Hello World!! ...
首先,"Failed to parse Number: For input string: "-.---""”是一个典型的Java解析异常,通常发生在尝试将字符串转换为数值类型(如整数或浮点数)时,而该字符串不能被成功解析。在这种情况下,“-.---”是一个...
`std::string` 提供了`assign()`函数来改变字符串的值,它可以接受一个字符数组、另一个`std::string`对象或者一个整数值(表示重复某个字符的次数)。 ```cpp std::string str; str.assign("New Value"); // ...
在Java编程中,`java.lang.NumberFormatException`是一个常见的运行时异常,它通常发生在尝试将一个字符串转换为数值类型(如int、long、float或double)时,但该字符串无法被解析为有效的数值。"For input string: ...
boolean isEmpty():判断是否是空字符串:return value.length == 0 String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写 String toUpperCase():使用默认语言环境,将 String 中的所有...
8. **异常安全**:`std::string`设计时考虑了异常安全,这意味着在发生异常时,它会保持内部状态的正确性,避免内存泄漏。 9. **多态性与模板**:由于`std::string`是模板类的一个实例,因此它能够与其他STL组件...
这篇文档“c++中的string用法(一) .doc”将深入探讨`std::string`的使用方法,帮助程序员更有效地管理字符串数据。 1. **`std::string`的定义** `std::string`是一个类模板,用于存储、操作和操作Unicode或ASCII...
在C++中,我们可以使用`std::stringstream`或者`std::stoi`函数配合基数参数进行转换。例如: ```cpp #include #include int hexStrToInt(std::string hexStr) { std::stringstream ss; int value; ss << std...
- 使用`std::ifstream`打开ini文件,逐行读取,根据行首的`[`判断是否开始新的节,根据等号`=`判断是否为键值对。 - 将读取到的节和键值对适当地插入到数据结构中。 2. **写入配置文件**: - 写入时,同样需要...
5. **异常安全**:`StdString`可能包含了异常安全的编程实践,确保在异常发生时能正确地清理资源,避免内存泄漏。 6. **扩展功能**:除了基本的字符串操作,`StdString`可能还添加了一些实用的成员函数,如格式化...
其基本语法类似于 C# 中的 `string.Format` 方法,但使用 `{}` 代替 `{0}` 这样的索引表示。 ### 二、数值格式化 #### 1. 货币格式化 - **C# 示例**: ```csharp string.Format("{0:C}", 0.2); // 输出为 $0.10...
标题“输入一个整数判断正负”涉及到的是基础的编程逻辑,主要在JAVA语言环境下实现。这个任务的核心是编写一个程序,它能接收用户输入的一个整数,然后根据该整数的值判断它是正数、负数还是零。在JAVA中,我们可以...
add方法有三种重载形式,分别是add(double,double)、add(String,String)和add(String,String,int)。第一个方法add(double,double)是将两个double类型的数相加,然后返回double类型的结果。第二个方法add(String,...