itoa()、atoi()函数C++实现

2023-05-16

主要思想就是利用字符型的数字减去或加上字符型的0,得到的就是刚好就是整型的数字
例如’0’的ASCII码为48,‘4’的ASCII码为52,‘4’-‘0’ = 52-47 = 4,这样就得到数字4了

整型转字符串(itoa)

#include <iostream>
#include <string.h>
using namespace std;

char* int2str(int num) {
	char* buf = new char[10];
	memset(buf, 0, 10);
	int temp = num < 0 ? -num : num;//取num的绝对值temp
	int i = 0;
	while (temp != 0)
	{
		buf[i++] = (temp % 10) + '0';
		temp /= 10;
	}

	//如果num<0就让数组多交换一次,下标0的位置填'-'号
	num >= 0 ? --i : i;
	for (int j = 0, k = i ; j < k; j++, k--)
	{
		int t = buf[j];
		buf[j] = buf[k];
		buf[k] = t;
	}

	if (num < 0)
	{
		buf[0] = '-';
	}
	return buf;
}


int main() {
	int num = 0;
	cin >> num;
	char* str = int2str(num);
	cout << str << endl;
	delete[] str;
	return 0;
}

字符串转整型(atoi)

#include <iostream>
using namespace std;

int str2int(const char* str) {
	if (str == NULL)
		return -1;

	//保存第一个字符地址,便于后面判断正负
	const char* ptr = str;

	//如果第一个字符是正负号,那么就不转换
	if (*str == '+' || *str == '-')
		str++;

	int temp = 0;
	while (*str != '\0')
	{
		//字符0的ASCII码是48,字符9的ASCII码是57,这里的比较会转化为ASCII码值进行比较
		if(*str < '0' || *str > '9')
			break;	//如果不是数字就跳出循环,返回0

		temp = temp * 10 + (*str - '0');
		str++;	//将指针向后移动
	}

	//虽然上面对第一个符号的正负号进行判断了,但是这里返回的temp
	if (*ptr == '-')
	{
		temp = -temp;
	}
	return temp;
}

int main() {

	char p[10] = "";
	//getline()函数只会收录包括换行符\n在内的10个字符
	cin.getline(p, 10);
	int num = str2int(p);
	cout << num << endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

itoa()、atoi()函数C++实现 的相关文章

  • itoa()、atoi()函数C++实现

    主要思想就是利用字符型的数字减去或加上字符型的0 xff0c 得到的就是刚好就是整型的数字 例如 0 的ASCII码为48 xff0c 4 的ASCII码为52 xff0c 4 0 61 52 47 61 4 xff0c 这样就得到数字4了
  • 【C语言】实现 atoi 函数

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 8. String to Integer (atoi)

    String to Integer atoi Implement atoi which converts a string to an integer The function first discards as many whitespa
  • C语言字符串处理函数 strtok() 和 atoi() 的使用

    字符串函数 xff08 String processing function xff09 也叫字符串处理函数 xff0c 指的是编程语言中用来进行字符串处理的函数 本文主要介绍 C语言中符串处理函数 strtok 和atoi 的区别使用方法
  • 【C】模拟实现atoi,atof函数

    目录 atoi函数 atof函数 模拟实现atoi xff0c atof函数 1 atoi模拟实现 2 atof模拟实现 3 测试案例代码 atoi函数 atoi函数是将字符串转换成整数 函数头文件 xff1a include lt std
  • atoi()函数

    atoi 函数 原型 xff1a int atoi xff08 const char nptr xff09 用法 xff1a include lt stdlib h gt 功能 xff1a 将字符串转换成整型数 xff1b atoi 会扫描
  • atoi()和stoi()的区别----数字字符串的处理

    相同点 xff1a 都是C 43 43 的字符处理函数 xff0c 把数字字符串转换成int输出 头文件都是 include lt cstring gt 不同点 xff1a atoi 的参数是 const char 因此对于一个字符串str
  • 如何将整数可移植地转换为字符串?

    我一直在寻找一种以可移植的方式将整数转换为字符串的方法 至少在 Windows 和 Linux 以及 x86 和 x86 64 之间可移植 但我想itoa X 成为标准就像atoi 1 但我在维基百科条目中读到以下内容 itoa 函数是标准
  • C 编程:仅从 fgets 打印 int

    看到这个main int main void int i int ch char str 512 fgets str sizeof str stdin for i 0 i lt strlen str i if str i 0 str i n
  • 递归地伊托亚

    我一直在尝试写一个递归的函数版本itoa 代码如下所示 void itoa int n char s static int i 0 if n 10 0 itoa n 10 s else if n lt 0 i 1 s 0 is allrea
  • 将“整数字符串”转换为整数数组

    我正在尝试将整数数组传递到我的程序中 有没有更好的方法将其转换为整数 我当前收到错误 可变大小的对象可能未初始化 for i 0 i lt argc i int arr i atoi argv i 假设argc and argv是传递给 m
  • 如何修复我的“itoa”实现,使其不打印反向输出?

    我想在C中将一个整数转换为一串数字字符 我尝试过使用itoa 但它是非标准的 并且不是由我的 C 库提供的 我尝试实现自己的itoa 但它无法正常工作 include
  • 如何使用 atoi() 获得负值?

    我编写这段代码是为了获取相反形式的数字 但如果我使用任何负输入 它会显示正反转数 C 中的 atoi 函数可以处理负数吗 include
  • 为什么在 C 中使用 atoi() 会得到这个意想不到的结果?

    我不明白以下 C 代码的结果 main char s AAA advanceString s void advanceString p 3 int val atoi p printf The atoi val is d n val 这里的a
  • c atoi() 在 Linux 上用于宽字符?

    Linux 上是否有与宽字符等效的 c atoi 我可以找到 MS wtoi 的东西 但我可以在标准 Linux 库中找到任何东西 您可以使用wcstol http www gnu org s libc manual html node P
  • “atoi”这个名字从何而来?

    在C语言中他们从哪里想出这个名字atoi用于将字符串转换为整数 我唯一能想到的是 Array To Integer 的缩写 但这实际上没有意义 这意味着 Ascii 到 Integer 同样 你可以有atol对于 Ascii 到 Long
  • C 字符值算术

    我一直在阅读 C 编程语言 一书来学习 C 我偶然发现了算术s i 0 他们说它给出了存储在 s i 中的字符的数值 我不太明白 它怎么能通过减法给出值呢 注意 这用在 atoi 函数中 该函数将数字字符串转换为其等价的数字 谢谢 可能重复
  • 理解 atoi() 函数

    我是一名 Python 程序员 正在从 K R 书中学习 C 这似乎是一个非常微不足道的问题 但我仍然被难住了 下面附上 K R RIP Ritchie 书中的一段代码 它实现了 atoi 函数 atoi s convert s to in
  • 将字符串中保存的数字中的每个数字转换为 int 数组

    我正在 DFA 上编写这个项目 我想将保存为字符串的整数的每个数字保存并转换为 int 数组 这是负责此操作的函数的代码 int l final states size int temp final temp final new int l
  • ANSI C,整数到字符串,不带可变参数函数

    我目前正在使用支持 ANSI C 的 PLC 但使用它自己的 GNU 编译器风格 它不编译任何可变参数函数和 itoa 之类的东西 所以使用 sprintf co 不是将整数转换为字符串的选项 任何人都可以引导我到一个列出了健壮的 无 sp

随机推荐