c++ 字符串转数字
时间: 2023-11-18 20:54:13 浏览: 34
可以使用 `std::stoi` 函数将字符串转换为整数。例如:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "123";
int num = std::stoi(str);
std::cout << num << std::endl; // 输出 123
return 0;
}
```
如果字符串无法转换为整数,`std::stoi` 函数会抛出 `std::invalid_argument` 或 `std::out_of_range` 异常。
相关问题
C++ 字符串转数字
在C语言中,可以使用以下方法将字符串转换为数字:
1. 使用库函数atoi():这个函数可以将字符串转换为整数。例如:
```c
char str[] = "123";
int num = atoi(str);
```
这样就将字符串"123"转换为整数123。
2. 使用库函数atof():这个函数可以将字符串转换为浮点数。例如:
```c
char str[] = "3.14";
float num = atof(str);
```
这样就将字符串"3.14"转换为浮点数3.14。
3. 使用库函数sscanf():这个函数可以根据指定的格式将字符串转换为特定类型的数据。例如:
```c
char str[] = "456";
int num;
sscanf(str, "%d", &num);
```
这样就将字符串"456"转换为整数456,并存储在变量num中。
4. 使用库函数strtol():这个函数可以将字符串转换为长整数。例如:
```c
char str[] = "789";
long num = strtol(str, NULL, 10);
```
这样就将字符串"789"转换为长整数789。
以上是C语言中将字符串转换为数字的几种常用方法。你可以根据需要选择合适的方法进行转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++ 字符串和数字之间的相互转换](https://blog.csdn.net/weixin_43390123/article/details/116094291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [C++中将字符串转换为数字](https://blog.csdn.net/qq_46906413/article/details/122824849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
c++字符串转数字函数
C语言中,字符串转数字函数可以使用atoi函数或者strtol函数来实现。
atoi函数的原型为:
```c
int atoi(const char *str);
```
该函数将字符串参数str转换为一个int类型的整数。函数会扫描参数字符串,跳过前面的空白字符,直到遇到数字或正负号才开始做转换,再遇到非数字或字符串末尾时停止转换,并将结果返回。
例如,以下代码将字符串“123”转换为整数123,并将该整数赋值给变量x。
```c
char str[] = "123";
int x = atoi(str);
```
strtol函数的原型为:
```c
long int strtol(const char *nptr, char **endptr, int base);
```
该函数将字符串参数nptr转换为一个long int类型的整数。函数将扫描参数nptr字符串,跳过前面的空白字符(例如空格、回车、换行符等),直到遇到数字或正负号才开始做转换,再遇到非数字或字符串末尾时停止转换,并将结果返回。
参数endptr是一个指向字符指针的指针(char **),用来存储第一个无法转换的字符的地址,即endptr指向的字符。如果该指针为NULL,则不存储该地址。
参数base用来指定转换的进制(2-36),如果base为0,则会根据字符串来确定进制(例如“0x”表示十六进制,“0”表示八进制,“0b”表示二进制等)。
例如,以下代码将字符串“123”转换为整数123,并将该整数赋值给变量x。
```c
char str[] = "123";
char *endptr;
long int x = strtol(str, &endptr, 10);
```
需要注意的是,如果字符串无法转换为数字,atoi和strtol函数都会返回0。因此,使用时需要对返回值进行判断。另外,由于使用了指针参数endptr,需要确保该指针的初始值不为NULL,否则会出现错误。