C++中string类型和int类型之间的相互转换【全网最全】

这篇具有很好参考价值的文章主要介绍了C++中string类型和int类型之间的相互转换【全网最全】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字符串操作是各种算法题中的常客,很多数据常常以字符串形式给出,其中有的需要自己转化成整数,而一些整型数据有时转换成字符串处理起来更加方便,比如判断一个整数是否是回文数,所以字符串和整数的转换是一些问题处理的基础步骤,C++ 在处理这类问题时并不像 Python 那样方便,但是也有许多方法能够实现。

一、string 转为int

1、使用 atoi 转换

#include <iostream>
#include <stdlib.h>

int main()
{
    std::string str = "668";
    std::cout << atoi(str.c_str());
    return 0;
}

atoi 函数的头文件是 stdlib.h,同样是一个C语言中的函数

2、 使用std::stoi

这个标准库是从C++11开始才有的
示例代码如下:

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int x;
	string str = "-10";
	string str1 = "-10a";
	string str2 = "a10";
	x = stoi(str);
	cout << x << endl;
	x = stoi(str1);		 //stoi()函数遇到字母时会自动停下
	cout << x << endl;
	//x = stoi(str2);    //stoi()函数没有数字的话,程序虽然可以编译,但运行时会出错
	//cout << x << endl;
	return 0;
}

3、 通过 istringstream 转换

#include <iostream>
#include <sstream>

int main()
{
    std::string str = "668";
    int num = 0;

    std::istringstream ss(str);
    ss >> num;

    std::cout << num;
    return 0;
}

使用 istringstream 可以从字符流中读取整数,与 ostringstream 是一种相反的操作

4、使用 sscanf

sscanf 函数是 C 语言标准库中的函数,可以用于从一个格式化的字符串中提取数据。在 C++ 中,可以使用 sscanf 函数将字符串转换为整数。

下面是一个示例代码,展示如何使用 sscanf 将字符串转换为整数:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num;

    if (sscanf(str.c_str(), "%d", &num) == 1) {
        std::cout << "Converted number: " << num << std::endl;
    } else {
        std::cout << "Failed to convert the string to an integer." << std::endl;
    }

    return 0;
}

在上面的代码中,我们将字符串 "12345" 存储在 str 变量中。然后,我们使用 sscanf 函数将字符串转换为整数,并将结果存储在 num 变量中。sscanf 函数的第一个参数是要转换的字符串(使用 c_str() 方法将 std::string 转换为 C 风格的字符串),第二个参数是格式化字符串 "%d",用于指定要提取的数据类型为整数。如果转换成功,sscanf 函数将返回成功转换的变量数目(在这个例子中为 1),否则返回值为 0。

以上代码的输出将是:

Converted number: 12345

请注意,sscanf 函数可以根据不同的格式化字符串提取不同类型的数据。如果你的字符串中包含其他数据类型,你可以相应地修改格式化字符串和变量的类型。

【注】如果你使用的是VS编译器,那么会报错说sscanf不安全,改为sscanf_s即可。

5、使用strtol

使用c标准库

#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);

示例代码:

#include <iostream>
#include <cstdlib>
#include <string>
 
int main()
{
  std::string text{"123"};
  errno = 0; // pre set to 0
  int number = (int)std::strtol(text.c_str(), nullptr, 10);
  if (errno == ERANGE) {
    // the number is too big/small
    // number = (int)LONG_MAX or (int)LONG_MIN
    std::cerr << "Too big or small: " << errno << "\n";
    return 1;
  } else if (errno) {
    // maybe EINVAL, E2BIG or EDOM
    // unable to convert to a number
    std::cerr << "ERROR: " << errno << "\n";
    return 1;
  }
  // TODO: you need to check whether the long to int overflow too if neccessary
  std::cout << number << "\n";
  return 0;
}

6、使用at()函数定位,先转为字符型,然后再转为int类型

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string str = "a1b2c3";
	int i = str.at(1) - '0';
	cout << i << endl;
	return 0;
}

二、 int转为string

1、通过 std::to_string() 函数

#include <iostream>
#include <string> // 添加这个头文件

int main() {
    int num = 123;
    std::cout << std::to_string(num);
    return 0;
}

这种方式在 C++11 中才能使用,编译时记得加上 --std=c++11 的选项

2、通过 ostringstream

#include <iostream>
#include <sstream>

int main()
{
    int num = 123;
    std::ostringstream ss;
    ss << num;
    std::cout << ss.str();
    return 0;
}

这是一种通过字符流的方式将整数转换成字符串,这种方式在C++11之前也可以使用

3、通过 sprintf

#include <stdio.h>

int main()
{
    int num = 123;
    char buffer[256];
    sprintf(buffer, "%d", num);

    printf("%s", buffer);
    return 0;
}

【注】上述代码在VS编译器中运行时,会报sprintf不安全,换为sprintf_s即可

这是一种C语言中的转换方式,sprintf 也可以换成更安全的 snprintf 函数,如下所示。文章来源地址https://www.toymoban.com/news/detail-763205.html

#include <iostream>
#include <cstdio>

int main() {
	char buffer[100];
	int num = 123;

	// 使用 snprintf 将整数 num 格式化为字符串并存储在 buffer 中
	snprintf(buffer, sizeof(buffer), "%d", num);

	// 使用 std::cout 输出 buffer 中的内容
	std::cout << "buffer 中的内容是:" << buffer << std::endl;

	return 0;
}

到了这里,关于C++中string类型和int类型之间的相互转换【全网最全】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • java中日期转换Date、DateTime、TimeStamp、String之间相互转换

    1.1Date-String 2.1Date-TimeStamp 2.2TimeStamp-Date DateTime使用依赖 3.1Date-DateTime 方法1: 方法2: 3.2DateTime-Date 4.String转DateTime

    2024年02月15日
    浏览(8)
  • Java 中将 String 类型转换为 int 类型的方法

    在Java中将 String 类型转换为 int 类型是一个常见的操作,因为在实际开发中,我们经常需要从用户输入或者外部数据源中获取字符串形式的数字,并将其转换为整数进行计算和处理。在Java中,有几种方法可以实现这种转换,下面我将逐一介绍这些方法。 Integer.parseInt() 方法是

    2024年04月22日
    浏览(9)
  • Java中将String类型转换为int类型的方法

    在Java编程中,经常需要将字符串类型(String)转换为整数类型(int)。这在处理用户输入、读取文件或进行数值计算时非常常见。本文将详细介绍如何在Java中进行这种类型转换,并提供相应的源代码示例。 Java提供了几种方法来实现String到int的转换。下面将介绍其中的两种常

    2024年02月05日
    浏览(11)
  • String类型和Date类型相互转换(java)

    ** ** 1、format方法可以把Date类型转换成特定格式的String类型,如果Date类型和定义的SimpleDateFormat长度不一致会自动在后面补充0 2. parse方法可以把String型的字符串转换成特定格式的date类型,使用parse时字符串长度要和定义的SimpleDateFormat对象长度一致 下面test2的例子,由于位数不

    2024年02月15日
    浏览(5)
  • 【Java基础】java中Long与String类型相互转换

    Long 转 String 两种方法: 1: String str = String.valueOf(Long val); 2: String str = Long.toString(Long val); String 转 Long两种方法: 1: Long L = Long.parseLong(String str); 转换后的值是Long包装类型。 2: long l = Long.ValueOf(String str); 转换后的值是long基本类型 注意:字符串中只能是数字。

    2024年02月16日
    浏览(5)
  • C++中如何将string(字符串)转换为int(整数)

    C++ 编程语言有一些内置数据类型: int , 对于整数(例如 10、150) double ,对于浮点数(例如 5.0、4.5) char ,对于单个字符(例如“D”、“!”) string ,对于字符序列(例如“Hello”) bool , 对于布尔值(true 或 false) C++ 是一种 强类型 编程语言,这意味着当您创建变量时,你

    2024年02月06日
    浏览(62)
  • 无缝数据转换!使用C++ 实现 Excel文件与CSV之间的相互转换

    无缝数据转换!使用C++ 实现 Excel文件与CSV之间的相互转换

    CSV格式是一种通用的文本文件格式,可在多个应用程序之间共享和使用。相比之下,Excel文件是一种电子表格格式,通常只能在Microsoft Excel中编辑和查看。因此,将Excel文件转换为CSV格式可使数据更方便地在其他应用程序中使用;而将CSV文件转换为Excel格式则有利于在Microsoft

    2024年02月11日
    浏览(10)
  • JAVA中int与string相互转化的几种方法

    1、String.valueOf(int i) 2、Integer.toString(int i) 3、i + “”; //i 为 int类型,int+string型就是先将int型的i转为string然后跟上后面的空string。 三种方法效率排序为: Integer.toString(int i) String.valueOf(int i) i+“” 1、Integer.parseInt(String)方法 parseInt()是Integer包装类里的一个方法,可以将字符串解

    2023年04月23日
    浏览(9)
  • Java 字节数组(byte[])和整型(int)的相互转换

          恰巧碰到了字节数组和整型的转换问题,特在此总结一下。将 int 按照小端法映射到 byte[] 中。即最低 8 位放在 byte[0] 中,依次类推。       这个实现起来比较简单,先保存最低的 8 位到 byte 数组中,然后不断的右移 8 位,每次保存低 8 位数据即可,参考代码:(

    2023年04月12日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包