c++编写一个函数,用于将一个字符串转换为整型数值
时间: 2023-05-01 13:06:39 浏览: 77
可以这样实现:
```c++
int strToInt(string s){
int res = 0;
for(int i=0;i<s.length();i++){
res = res*10 + (s[i]-'0');
}
return res;
}
```
其中 `s` 是需要转换的字符串,函数返回值是转换后得到的整型数值。
相关问题
自己实现一个atoi函数,用于将字符串转换成整形
好的,下面是一个实现atoi函数的示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int atoi(string str) {
int res = 0;
int sign = 1;
int i = 0;
// 去除空格
while (str[i] == ' ') {
i++;
}
// 处理正负号
if (str[i] == '-' || str[i] == '+') {
sign = (str[i++] == '-') ? -1 : 1;
}
// 转换数字
while (i < str.length() && isdigit(str[i])) {
int digit = str[i] - '0';
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) {
return (sign == 1) ? INT_MAX : INT_MIN;
}
res = res * 10 + digit;
i++;
}
return res * sign;
}
int main() {
string str = "-12345";
int num = atoi(str);
cout << num << endl;
return 0;
}
```
函数`atoi`接受一个字符串参数`str`,返回字符串表示的整数值。在函数中,我们使用了三个变量`res`、`sign`和`i`。变量`res`用于保存转换后的整数值,变量`sign`用于保存数字的正负号,变量`i`用于遍历字符串。
在函数中,我们首先去除字符串前面的空格。然后,我们处理正负号,如果字符串的第一个非空字符是负号,我们将`sign`设为-1,否则设为1。接着,我们遍历字符串中的数字字符,将其转换成相应的数字并累加到`res`中。如果`res`超出了整型范围,我们返回`INT_MAX`或`INT_MIN`,具体返回哪一个取决于数字的正负号。
在`main`函数中,我们调用`atoi`函数将一个字符串转换成整数,并打印结果,以便验证实现是否正确。
用C++编写一个程序,编写函数将字符串按逆序存放
好的,下面是用 C++ 编写的程序,实现将字符串按逆序存放的功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void reverse(char str[]) {
int len = strlen(str);
for(int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[100];
cout << "请输入字符串:";
cin >> str;
reverse(str);
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
在上面的程序中,我们编写了一个 `reverse` 函数,用于将传入的字符串按逆序存放。具体实现是使用双指针法,将字符串首尾字符互换,直到两个指针相遇为止。在 `main` 函数中,我们接受用户输入的字符串,调用 `reverse` 函数进行逆序操作,并输出结果。