首页 > 编程语言 >c++ 数字和string 类型的相互转换

c++ 数字和string 类型的相互转换

时间:2023-04-04 14:22:05浏览次数:35  
标签:std 转换 string int long c++ str include

C++ 数字和 string 类型的相互转换

数字转为 string

1.std::to_string() 函数

// Defined in header <string>
std::string to_string(int value);                   // (since C++11)
std::string to_string(long value);                  // (since C++11)
std::string to_string(long long value);             // (since C++11)
std::string to_string(unsigned value);              // (since C++11)
std::string to_string(unsigned long value);         // (since C++11)
std::string to_string(unsigned long long value);    // (since C++11)
std::string to_string(float value);                 // (since C++11)
std::string to_string(double value);                // (since C++11)
std::string to_string(long double value);           // (since C++11)

example:

#include <iostream>
#include <string>
 
int main()
{
    int i = 23;
    std::string str = std::to_string(i); // 把 i 转为 string 并赋值给 str
    std::cout << str << std::endl; // str = "23"
}

2.stringstream 类

example:

#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    int a = 10;
    std::stringstream ss;
    ss << a;
    std::string str = ss.str(); // str = "10"
    std::cout << str << std::endl;
}

3.springf

把数字转为 char*, 再转为string。

int sprintf( char* buffer, const char* format, ... );

example:

#include <iostream>
#include <string>
#include <cstdio>
 
int main()
{
    int i = 23;
    char* buf = (char*)malloc(20); // 分配内存
    std::sprintf(buf, "%d", i);
    std::string str = std::string(buf);
    std::cout << str << std::endl; // str = "23"
}

string 转为数字

unsigned long       stoul(const std::string& str, std::size_t* pos = nullptr, int base = 10);
unsigned long long  stoull( const std::string& str, std::size_t* pos = nullptr, int base = 10 );

int                 stoi( const std::string& str, std::size_t* pos = nullptr, int base = 10 );
long                stol( const std::string& str, std::size_t* pos = nullptr, int base = 10 );
long long           stoll( const std::string& str, std::size_t* pos = nullptr, int base = 10 );

float               stof( const std::string& str, std::size_t* pos = nullptr );
double              stod( const std::string& str, std::size_t* pos = nullptr );
long double         stold( const std::string& str, std::size_t* pos = nullptr );

example:

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;

int main()
{
    string str = "-123.556";

    unsigned long u = stoul(str); // u = 4294967173; 应该是先转为 32 位带符号的整型,再转为 unsigned long   

    unsigned long long lu = stoull(str); // lu = 18446744073709551493; 转为 64 位带符号的整型,再转为无符号的

    int i = stoi(str); // i = -123

    float f = stof(str); // f = -123.556
}

标签:std,转换,string,int,long,c++,str,include
From: https://www.cnblogs.com/AngleLin/p/17286283.html

相关文章

  • MongoDB-如何将BSON文档转换为人类可读的格式
    二进制Javascript对象表示法(BSON)是一种以二进制编码串行化的JSON文档。JSON更容易理解,因为它是人类可读的,但与BSON相比,它支持的数据类型更少。BSON已经被扩展,可以添加一些可选的非json原生数据类型,比如日期和二进制数据。MongoDB在内部和网络上以BSON格式存储数据。mongodump生......
  • mysql 时间转换成日期
    很多时候都存了当前时间,没有单独存日期这个函数。查询按天查询的时候,需要转换成日期。selectDATE_FORMAT(create_time,"%Y-%m-%d")asday,count(DISTINCT(product_user_id))asuv,count(product_user_id)aspvfromdts_pay_orderwhereclient_id=32andcreate_ti......
  • C++奥赛一本通贪心题解
    C++奥赛一本通刷题记录(贪心)2017.11.15Bygwj1139177410书不见了,占坑待填。AnEasyProblempoj2453//贪心,将最右边第一个01改成10并将其右边的1都往右移到最低位#include<iostream>usingnamespacestd;intmain(){unsignedintn,x;while(cin>>n&&n){......
  • C++,OpenCV图形基础(2)
    图像基础颜色通道RGB图像有4个默认通道:红色、绿色和蓝色各有一个通道,以及一个用于编辑图像复合通道(主通道)彩色深度8位色,每个像素所能显示的彩色数为2的8次方,即256种颜色。16位增强色,16位彩色,每个像素所能显示的彩色数为2的16次方,即65536种颜色。24位真彩色,每个像素所能显示的彩色......
  • 【NOI OpenJudge】【1.2】编程基础之变量定义、赋值及转换
    01:整型数据类型存储空间大小#include<cstdio>intmain(){ inta;shortb; printf("%d%d",sizeof(a),sizeof(b)); return0;}02:浮点型数据类型存储空间大小#include<cstdio>intmain(){ floata;doubleb; printf("%d%d",sizeof(a),sizeof(b)); return......
  • C++统计写过的代码行数
    一、获得数据1、备份到XML2、改为txt2、进行统计#include<iostream>#include<string>usingnamespacestd;intmain(){ freopen("just.txt","r",stdin); strings; getline(cin,s); intflag=0;longlongcount=0; while(s!="gwj49491649......
  • cmake string example
    string(CONCATresult${var1}"/how")string(FIND${var1}"targetPattern"foundResultIndex)if(${foundResultIndex}GREATER_EQUAL0)endif()string(LENGTH<string><output_variable>)https://cmake.org/cmake/help/lates......
  • 2023蓝桥杯省赛C/C++组备赛
    一、简单计算与模拟1.成绩统计#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){ doublepoint; doublejige=0,youxiu=0; cin>>n; for(inti=0;i<n;++i){ cin>>point; if(point>=60){ jige++; if(point&......
  • java学习日记20230404-String类
    String类String对象用于保存字符串,也就是一组字符序列;字符串常量对象使用双引号包括起来的字符序列字符串的字符使用unicode字符编码,一个字符(不区分字母还是汉字)占用两个字节String常用的构造器:newString();newString(Stringoriginal);newString(char[]a);newString(char[]......
  • String 和 StringBuilder
    String类型在C#中用于保存字符,属于引用类型,一旦创建就不能再修改。1.在创建新字符串时,会在内存中重新分配空间。stringstr="helloworld";2.把一个字符串赋值给另外一个字符串,也会重新分配空间。stringstr1=str;3.修改字符串的值,也会重新分配......