ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ int转换为string

2021-01-10 23:30:48  阅读:206  来源: 互联网

标签:std string snprintf int C++ include


我们可以使用 C 标准库或C++库函数/类将 int 转换为字符串。

"现代"C++风格的方式

我们可以使用C++标准库中的std::to_string(), 这个是自11年以来添加到C++标准库中的。如果项目使用C++ 11 和之后的标准,建议使用这个方法。

std::string to_string( int value );

在标准头中定义,将数值转换为 std::string。
1) 具有与 std::sprintf(buf、"%d",value)一样,将带符号的十进制整数转换为将生成字符串的功能。

用于C++的一个程序示例如下。

std::to_string()

#include <iostream>
#include <string>

int main ()
{
  int n = 123;
  std::string str = std::to_string(n);
  std::cout << n << " ==> " << str << std::endl;

  return 0;
}

请注意,可能会从构造函数抛出异常。如果调用方打算处理这个异常,则调用方可能需要捕获下面的异常。

std::to_string() std::bad_allocstd::string

基于C++样式的流

我们可以使用C++库 std::stringstream,它已可用于 C++11之前将 int 转换为字符串。使用C++程序的一个如下。

std::stringstream

#include <sstream>
#include <iostream>

int main()
{
  int i = 123;
  std::stringstream ss;
  ss << i;
  std::string out_string = ss.str();
  std::cout << out_string << "\n";
  return 0;
}

C 样式方式

我们还可以在应用程序中使用 C 标准C++函数。一个C标准库函数,可以执行 int 到字符串转换的函数snprintf()。

#include <stdio.h>

int snprintf(char *str, size_t size, const char *format, ...);

The functions snprintf() and vsnprintf() write at most size bytes (including the terminating null byte ('\0')) to str.

下面是C++中使用函数将 int 转换为字符串的一个例子。

snprintf()

#include <cstdio>
#include <iostream>

#define MAX_BUFFER_SIZE 128

int main()
{
  int number = 123;
  char out_string [MAX_BUFFER_SIZE];
  int rt = snprintf(out_string, MAX_BUFFER_SIZE, "%d", number);
  if (rt < 0) {
    std::cerr << "snprintf() failed with return code " << rt << std::endl;
  } else {
    std::cout << "out_string = \"" << out_string << "\"\n";
  }
  return 0;
}

参考资料:
https://www.systutorials.com/how-to-convert-int-to-string-in-cpp/

标签:std,string,snprintf,int,C++,include
来源: https://blog.csdn.net/yao_zhuang/article/details/112450802

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有