字符串与数字的转换(C++)

一、用streanstream(c++的)

数据多的时候可能有点慢,不过很好用

1、 string—>数字(int、float、double)

	string str = "123";
	int num;
	stringstream ss;
    ss << str;
	ss >> num;
	cout << num << endl;

2、数字—>string

	int num = 32.123;
	string str;
	stringstream ss;
    ss << num;
	ss >> str;		//cout << ss.str() endl;一样的效果
	cout << str;

二、用sprintf()和sscanf()(c语言的)

1、 char类型的字符串—>数字

	char str[]="123456";
	int num;
	sscanf(str,"%d",&num);//这里切换类型即可
	cout << num << endl;

2、数字—>char类型的字符串

	char str[10];
	int num = 123465;
	sprintf(str,"%d",num);	//想改变其他的只需改变这的类型
	cout << str;

  注意:在使用的时候这里也可以直接转换进制

如:

	//实例1
	char str[]="171";
	int num;
	sscanf(str,"%x",&num);
	cout << num << endl;//转为了16进制
	//实例2
	char str[]="AB";
	int num;
	sscanf(str,"%x",&num);//16进制转为10进制,171
	cout << num << endl;

三、用itoa和atoi(c语言的)

1.char类型的字符串—>数字

  • atof():将字符串转换为双精度浮点型值。
  • atoi():将字符串转换为整型值。
  • atol():将字符串转换为长整型值。
  • strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
  • strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
  • strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
例:
	char str[]="171";
	int num = atoi(str);
	cout << num << endl;

2、数字—>char类型的字符串

  • itoa():将整型值转换为字符串。
  • ltoa():将长整型值转换为字符串。
  • ultoa():将无符号长整型值转换为字符串。
  • gcvt():将浮点型数转换为字符串,取四舍五入。
  • ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
  • fcvt():指定位数为转换精度,其余同ecvt()。
例:

函数原型:char *itoa(int value, char *string, int radix);
value为输入整数,string为输出转换的字符串,radix 为以几进制输出

	int num = 23;
	char str[10];
	itoa(num,str,10);
	cout << str;

四、c++的string和c的char*之间的转换

1.char—>string

	char p[20] = "Hello World!";
   		string str(p);
   		cout << str;

2.string—> const char*

	string str="Hello World";
	const char *c = str.c_str();
	cout << c << endl;

3.const char*—> char*

	const char* tmp = "Hello World";
    char* p = const_cast<char*>(tmp);
    cout << p << endl;

4.char*—> const char*

	char* p = "Hello World";
    const char* temp = p;
    cout << temp << endl;
发布了17 篇原创文章 · 获赞 14 · 访问量 308

猜你喜欢

转载自blog.csdn.net/weixin_44635198/article/details/104507324
今日推荐