C++ string与int的互相转换

原文地址

C++本身就提供了字符串与整型数之间的互换,那就是利用stringstream。下面是使用方法:

核心: 利用C++中的stringstream流。
由于使用过程比较简单就不再赘述,直接给出示例,重要的地方在示例注释中给予说明。

完整示例:
#include <iostream>
#include <string>
#include <sstream> //要使用stringstream流应包含此头文件
using namespace std;

int main()
{
stringstream stream; //声明一个stringstream变量
int n;
string str;

//string转int
stream << "1234"; //向stream中插入字符串"1234"
stream >> n; //从stream中提取刚插入的字符串"1234" 并将其赋予变量n完成字符串到int的转换
cout << n << endl; //输出n

stream.clear(); //同一stream进行多次转换应调用成员函数clear

//int转string
stream << 1234; //向stream中插入整型数1234
stream >> str; //从steam中提取刚插入的整型数 并将其赋予变量str完成整型数到string的转换
cout << str << endl; //输出str
return 0;
}

上面方法很简便, 缺点是处理大量数据转换速度较慢..
C library中的sprintf, sscanf 相对更快

可以用sprintf函数将数字输出到一个字符缓冲区中. 从而进行了转换...
例如:
已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S", 其中H是小时, M=分钟,S=秒

         int H, M, S;
        string time_str;
        H=seconds/3600;
        M=(seconds%3600)/60;
        S=(seconds%3600)%60;
        char ctime[10];
        sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串
        time_str=ctime; // 结果


与sprintf对应的是sscanf函数, 可以将字符串转换成数字

    char str[] = "15.455";
    int i;
    float fp;
    sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
    sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
    //打印
    printf( "Integer: = %d ", i+1 );
    printf( "Real: = %f ", fp+1 );
    return 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,将int转换String有两种常见的方法: 第一种方法是使用字符串拼接的方式,即将int类型的变量与一个空字符串相加,例如:s = i + ""。这种方法会产生两个String对象。 第二种方法是使用String类的静态方法valueOf(),例如:s = String.valueOf(i)。这种方法直接使用String类的静态方法,只产生一个对象。 在将String转换int时,也有两种常见的方法: 第一种方法是使用Integer类的静态方法parseInt(),例如:i = Integer.parseInt(s)。这种方法直接使用静态方法,不会产生多余的对象,但如果字符串无法解析为整数,会抛出异常。 第二种方法是使用Integer类的valueOf()方法,然后再调用intValue()方法,例如:i = Integer.valueOf(s).intValue()。这种方法相当于先使用Integer.valueOf(s)将字符串转换Integer对象,然后再调用intValue()方法将Integer对象转换int类型。这种方法也会抛出异常,并且会多产生一个对象。 在C++中,将字符串转换为整数可以使用以下几种方法: 第一种方法是使用stoi函数,格式为:int number = stoi(str)。这种方法需要引入头文件#include <string>,并且可以直接将字符串转换为整数。 第二种方法是使用字符串流对象istringstream来实现,例如:istringstream is(str); int i; is >> i;。这种方法需要引入头文件#include <sstream>,并且需要使用字符串流对象来读取整数。 第三种方法是使用隐式转换,即直接将字符串赋值给整型变量,例如:int i = atoi(str.c_str())。这种方法需要引入头文件#include <cstdlib>,并且会将字符串转换为整数,但如果字符串无法解析为整数,会返回0。 所以,在Java中,将String转换int可以使用parseInt()方法或valueOf()方法;在C++中,可以使用stoi函数、字符串流对象istringstream或隐式转换。 #### 引用[.reference_title] - *1* *3* [Stringint 类型之间的互相转换](https://blog.csdn.net/rui_xiao/article/details/79711950)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [stringint之间转换](https://blog.csdn.net/weixin_43892514/article/details/120876499)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值