如何用C++编写一个自定义函数,实现将数字字符串精确地转换为整数,并用主函数测试?
时间: 2024-10-29 15:14:56 浏览: 13
在C++中,你可以使用`std::stoi`函数从字符串直接转换成整数,但如果字符串包含非数字字符,该函数会抛出异常。如果你需要更精确的控制,可以尝试手动遍历字符串,检查每个字符是否为数字。以下是一个简单的自定义函数实现:
```cpp
#include <string>
#include <stdexcept>
// 自定义函数:从字符串精确地转换为整数
int custom_str_to_int(const std::string& str) {
int result = 0;
bool is_negative = false;
if (str[0] == '-') {
is_negative = true;
str.erase(0, 1); // 移除负号
}
for (char c : str) {
if (!isdigit(c)) { // 检查字符是否为数字
throw std::invalid_argument("Invalid input, non-digit character found.");
}
result = result * 10 + (c - '0'); // 将字符转换为整数值并累加
}
return is_negative ? -result : result;
}
int main() {
try {
std::string num_str = "12345";
int converted_num = custom_str_to_int(num_str);
std::cout << "Converted number: " << converted_num << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个自定义函数中,我们首先检查字符串的第一个字符,如果是负号,就设置标志并将负号移除。然后逐个遍历剩余的字符,如果遇到非数字字符,则抛出异常。如果所有字符都是有效的数字,函数将返回整数值。
阅读全文