c++ 数字类型和字符串类型互转详解

 更新时间:2021年09月03日 14:44:46   作者:Easyhappy.  
今天小编就为大家分享一篇讲解c++ 数字类型和字符串类型互转的文章,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一级目录 数字转为字符串

二级目录 字符串转为数字

1.数字转为字符串

(1).首先要加头文件

#include < iostream >

#include < sstream >

#include < string >

这个类在头文件中定义, < sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。

实现这个目标,非stringstream类莫属;

  int i=100.22; 
  //用 stringstream定义一个变量 str;
  stringstream s;
  s<<i;  //这不是输出语句!
  string str1=s.str();
  //str1即为转为的字符串

写个例题 //来自牛客网上的一题

输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数

例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次

#include<iostream>
#include<sstream>
#include<string> 
using namespace std;
int NumberOf1Between1AndN_Solution(int n) 
{
        int count=0;
        for(int i=1;i<=n;i++)
        {
        	stringstream s;
            s << i;
             string str=s.str();
            for(int j=0;j<str.size();j++)
            {
               if(str[j]=='1')
               {
                     count++;
               }
            }
        }
        return count;
}
int main()
{
   int a=13;
   int count=NumberOf1Between1AndN_Solution(a);
   cout<<count;
   return 0;
 } 

1.字符串转数字

单个字符转为数字

我以前用过这种写法

string  str="3434";
int a=str[1]-'0'; //a=4;

字符串转为数字

可自己按照单个字符转的方式自己写一个函数

string s="321";
int num=0;
for(int i=0; i<s.size() ;i++){
	//把单个字符变为数字
	int x= s[i]-'0';
	//每次都要进位,也就是*10
	num = num*10 + x;
}

还可以用< sstream >里的stringstream

#include<iostream>
#include<string> 
#include<sstream>
using namespace std;
int main()
{
	 string str="342324";
	 int a;
	 stringstream ss;
	 ss<<str;
	 ss>>a;
	 cout<<a-1;//输出342323
	 return 0;
}

还可以用 #include<stdlib.h>头文件下atoi()函数

//string  转为int 
//string 利用从   .c_str() 转  const char *
//利用atoi(const char * ) 转 int 
#include<iostream>
#include<stdlib.h>
#include<string> 
using namespace std;
int main()
{
	string str="3413414";
	int a=atoi(str.c_str());
	cout<<a-1;
	return 0; //输出3413413
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++中pair的用法总结

    C++中pair的用法总结

    pair是C++STL(标准模板库)中的一个现有容器,它将2个数据整合成一组数据,当我们类似需求的时候就可以使用到pair,pair的本质其实就是个结构体,本文将详细的给大家介绍pair用法,感兴趣的同学可以参考阅读
    2023-05-05
  • C++设计模式之备忘录模式(Memento)

    C++设计模式之备忘录模式(Memento)

    这篇文章主要为大家详细介绍了C++设计模式之备忘录模式Memento的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Qt利用DOM类实现读取xml文件

    Qt利用DOM类实现读取xml文件

    Dom(Document Object Model,即文档对象模型)能把XML文档转换成应用程序可遍历的树形结构,这样便可以随机访问其中的节点。本文将详细讲讲实现的方法,需要的可以参考一下
    2022-06-06
  • C++实现LeetCode(76.最小窗口子串)

    C++实现LeetCode(76.最小窗口子串)

    这篇文章主要介绍了C++实现LeetCode(76.最小窗口子串),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Linux中rm命令使用以及C/C++代码实现

    Linux中rm命令使用以及C/C++代码实现

    m 是remove 的缩写,Linux中 rm 命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除,这篇文章主要给大家介绍了关于Linux中rm命令使用以及C/C++代码实现的相关资料,需要的朋友可以参考下
    2022-04-04
  • C++通用动态抽象工厂的实现详解

    C++通用动态抽象工厂的实现详解

    在面向对象的编程中,一般通过继承和虚函数来提供抽象能力,下面这篇文章主要给大家介绍了关于C++通用动态抽象工厂的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • C语言实现六边形扫雷游戏的示例代码

    C语言实现六边形扫雷游戏的示例代码

    所谓六边形扫雷,就是没有扫雷模式的消零算法,每一个安全的点都需要单独挖出来,一次显示一个格子,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C语言行优先和列优先的问题深入分析

    C语言行优先和列优先的问题深入分析

    这篇文章主要介绍了C语言行优先和列优先的问题深入分析的相关资料,需要的朋友可以参考下
    2017-01-01
  • QT线程QThread的使用介绍

    QT线程QThread的使用介绍

    在进行桌面应用程序开发的时候,假设程序在某些情况要处理复杂逻辑, 如果一个线程去处理,就会导致窗口卡顿,无法处理用户操作。这就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率
    2022-09-09
  • C++数据结构分析多态的实现与原理及抽象类

    C++数据结构分析多态的实现与原理及抽象类

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2022-02-02

最新评论