C++,怎么把字符转换成数字 c++字符串如何转化为数字?
c++\u600e\u4e48\u5c06\u5b57\u7b26\u20183\u2019\u8f6c\u6362\u4e3a\u6574\u578b\u6570\u5b573\u554a\uff1f\u5b57\u7b26\u7b26\u578b\u8f6c\u6362\u6574\u5f62\u7528\u5f3a\u5236\u8f6c\u6362\u5c31\u884c\uff0c\u53ef\u4ee5\u53c2\u8003\u4e0b\u9762\u7684\u4ee3\u7801\uff1a
char c='B' ;
int a ;
a = (int)c ;
\u5982\u679c\u662f\u5b57\u7b26'0'\u5230\u20189\u2019\u8f6c\u62100-9
char c='8' ;
int a ;
a =(int) (c - '0') ;
\u6269\u5c55\u8d44\u6599\uff1a
C++\u8bed\u8a00\u7f16\u8bd1\u7cfb\u7edf\u63d0\u4f9b\u7684\u5185\u90e8\u6570\u636e\u7c7b\u578b\u7684\u5f3a\u5236\u8f6c\u6362\u89c4\u5219\u5982\u4e0b\uff1a
1\u3001\u6267\u884c\u7b97\u672f\u8fd0\u7b97\u65f6\uff0c\u4f4e\u7c7b\u578b(\u77ed\u5b57\u8282)\u53ef\u4ee5\u8f6c\u6362\u4e3a\u9ad8\u7c7b\u578b(\u957f\u5b57\u8282)\uff1b\u4f8b\u5982\uff1a int\u578b\u8f6c\u6362\u6210double\u578b\uff0cchar\u578b\u8f6c\u6362\u6210int\u578b\u7b49\u7b49
2\u3001\u8d4b\u503c\u8868\u8fbe\u5f0f\u4e2d\uff0c\u7b49\u53f7\u53f3\u8fb9\u8868\u8fbe\u5f0f\u7684\u503c\u7684\u7c7b\u578b\u81ea\u52a8\u9690\u5f0f\u5730\u8f6c\u6362\u4e3a\u5de6\u8fb9\u53d8\u91cf\u7684\u7c7b\u578b\uff0c\u5e76\u8d4b\u503c\u7ed9\u5b83
3\u3001\u51fd\u6570\u8c03\u7528\u65f6\uff0c\u5c06\u5b9e\u53c2\u7684\u503c\u4f20\u9012\u7ed9\u5f62\u53c2\uff0c\u7cfb\u7edf\u9996\u5148\u4f1a\u81ea\u52a8\u9690\u5f0f\u5730\u628a\u5b9e\u53c2\u7684\u503c\u7684\u7c7b\u578b\u8f6c\u6362\u4e3a\u5f62\u53c2\u7684\u7c7b\u578b\uff0c\u7136\u540e\u518d\u8d4b\u503c\u7ed9\u5f62\u53c2
\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362
\u4f60\u53ef\u4ee5\u53eb stringstream \u548c vector \u5e2e\u5fd9\u3002
\u4e0b\u9762\u7684\u4ee3\u7801\u91cc dbl_array \u65e2\u662f\u4f60\u8981\u521b\u5efa\u7684\u5b9e\u6570\u6570\u7ec4\uff08real \u4ee3\u8868\u4f60\u8bfb\u5230\u7684\u5b57\u7b26\u4e32\uff09\u3002
#include
#include
#include
using namespace std;
int main( ) {
string real = "12.32 12 35 25.3 36.366";
stringstream ss( real );
vector vd;
// Collect all real numbers.
double temp;
while( ss >> temp )
vd.push_back( temp );
// Create the array.
double *dbl_array = new double[ vd.size( ) ];
for( int i = 0; i < vd.size( ); ++i )
dbl_array[ i ] = vd[ i ];
}
\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0cvector \u53ef\u4ee5\u88ab\u5f53\u6210\u6570\u7ec4\u6765\u7528\uff0c\u800c\u4e14\u5b83\u6bd4\u6570\u7ec4\u4f18\u79c0\u5f88\u591a\uff0c\u6240\u4ee5\u4f60\u5927\u53ef\u53bb\u6389\u4e0a\u9762\u7684\u4ee3\u7801\u91cc\u591a\u4f59\u7684\u6700\u540e\u4e00\u6bb5\uff0c\u76f4\u63a5\u7528 vector\u3002
一、可以用C++的stringstream。 主要原因是操作简单。
数字转字符串,int float类型 同理
字符串转数字,int float类型 同理
二、使用sprintf()函数
char str[10];
int a=1234321;
sprintf(str,”%d”,a);
char str[10];
double a=123.321;
sprintf(str,”%.3lf”,a);
char str[10];
int a=175;
sprintf(str,”%x”,a);//10进制转换成16进制,如果输出大写的字母是sprintf(str,”%X”,a)
char itoa(int value, char string, int radix);
同样也可以将数字转字符串,不过itoa()这个函数是平台相关的(不是标准里的)。
三、使用sscanf()函数
char str[]=”1234321”;
int a;
sscanf(str,”%d”,&a);
………….
char str[]=”123.321”;
double a;
sscanf(str,”%lf”,&a);
………….
char str[]=”AF”;
int a;
sscanf(str,”%x”,&a); //16进制转换成10进制。
另外也可以使用atoi(),atol(),atof()。
拓展资料:
以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
1、可以用atoi函数。
例:char a='7';
int num=atoi(a);
2、如果是很多数字,字符串形式的话按下列方式转成Int型。
例:String s="1234";
int i = Integer.parseInt(s);
拓展资料
C++对C的“增强”,表现在六个方面:
(1) 类型检查更为严格。
(2) 增加了面向对象的机制。
(3)增加了泛型编程的机制(Template)。
(4)增加了异常处理。
(5)增加了运算符重载。
(6)增加了标准模板库(STL)。
面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。
学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++进行面向对象的程序设计,更要会利用模板进行泛型编程。
C++可以通过 atoi函数把字符转换成数字。
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++之父Bjame Stroustrup最近说C++11就像一个新语言,的确,C++11核心已经发生了巨大的变化,它现在支持Lambda表达式,对象类型自动推断,统一的初始化语法,委托构造函数,deleted和defaulted函数声明nullptr,以及最重要的右值引用。
头文件:stdlib.h 函数原型:int atoi(const char *nptr);
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int n;
char *str = "12345";
n = atoi(str);
printf("int=%d
",n);
return 0;
}字符串转数字:使用sscanf()函数
char str[]=”1234321”;
int a;
sscanf(str,”%d”,&a);
………….
char str[]=”123.321”;
double a;
sscanf(str,”%lf”,&a);
………….
char str[]=”AF”;
int a;
sscanf(str,”%x”,&a); //16进制转换成10进制另外也可以使用atoi(),atol(),atof().
sprintf 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。
sscanf 读取格式化的字符串中的数据。
1. 可以用sprintf函数将数字转换成字符串
int H, M, S;
string time_str;
H=seconds/3600;
M=(seconds%3600)/60;
S=(seconds%3600)%60;
char ctime[10];
sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串
time_str=ctime; // 结果
拓展资料
C++对C的“增强”,表现在六个方面:
(1) 类型检查更为严格。
(2) 增加了面向对象的机制。
(3)增加了泛型编程的机制(Template)。
(4)增加了异常处理。
(5)增加了运算符重载。
(6)增加了标准模板库(STL)。
面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。
学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++进行面向对象的程序设计,更要会利用模板进行泛型编程。
标准库中定义了to_string(val);可以将其它类型转换为string。还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等转换函数,可以函数,可以分别转化成int、long、double等.
stoi(s,p,b);stol(s,p,b);stoul(s,p,b);stoll(s,p,b);stoull(s,p,b); 返回s的起始子串(表示整数内容的字符串)的数值,返回值的类型分别为:int、long、unsigned long、long long、unsigned long long.
其中b表示转换所用的基数,默认为10(表示十进制).p是size_t的指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不返 回下标.
stof(s, p); stod(s, p); stold(s, p); 返回s的起始子串(表示浮点数内容)的数值,返回值的类型分别是float、double、long double.参数p的作用与整数转换函数中的一样。
绛旓細鏂规硶涓锛氬埄鐢╯tringstream鍜宻canf椋庢牸鍑芥暟 棣栧厛锛岃鎴戜滑浠tringstream涓轰緥锛屽畠鏄疌++鏍囧噯搴撲腑鐨勫己澶у伐鍏枫傞氳繃瀹冿紝鎴戜滑鍙互杞绘澗鍦板皢瀛楃涓叉槧灏勪负int, float鎴杁ouble銆備妇涓牀瀛愶紝浠ヤ笅浠g爜灞曠ず浜嗗浣曚娇鐢╯tringstream灏嗗瓧绗︿覆杞崲涓烘暣鏁帮細```cppstringstream ss("123");int num;ss >> num; // 灏嗗瓧绗︿覆杞崲...
绛旓細1銆侀鍏堢涓绉嶈浆鎹㈡柟寮忔槸锛灏嗗瓧绗︿覆绫诲瀷鐨勮浆鎹㈡垚鏁板瓧绫诲瀷鐨锛杩欎腑鏂规硶杞崲鐩存帴鐢╰o_number锛堬級杩涜杞崲锛屽叿浣撶殑璇硶涓簍o_number(str)灏卞彲浠ヤ簡銆2銆佺浜岀锛氬皢鏁板瓧绫诲瀷杞崲鎴愬瓧绗︿覆绫诲瀷鐨勩傝繖绉嶈浆鎹㈡柟寮忕敤to_char(),鍏跺疄杞崲鐨勬柟寮忔湁鐐圭被浼间笂闈㈢殑to_number()妯″紡锛岃嚦浜庡悗闈㈢殑999浠h〃鐨勫拰涓婇潰鐨勬剰鎬濅竴...
绛旓細C璇█涓紝鍙互浣跨敤atoi鍑芥暟灏嗗瓧绗︿覆杞崲涓烘暟瀛锛屽atoi("123")鍙互寰楀埌鏁板瓧123銆俛toi (琛ㄧず ascii to integer)鏄妸瀛楃涓茶浆鎹㈡垚鏁村瀷鏁扮殑涓涓嚱鏁帮紝搴旂敤鍦ㄨ绠楁満绋嬪簭鍜屽姙鍏蒋浠朵腑銆俰nt atoi(const char *nptr) 鍑芥暟浼氭壂鎻忓弬鏁 nptr瀛楃涓诧紝浼氳烦杩囧墠闈㈢殑绌虹櫧瀛楃锛堜緥濡傜┖鏍硷紝tab缂╄繘锛夌瓑銆傚鏋 nptr涓嶈兘...
绛旓細1銆#include<iostream> 2銆乽sing namespace std;3銆乮nt main()4銆亄 5銆乧har c;6銆乧in>>c;7銆乧out<<(int)c<<endl;8銆乺eturn 0;9銆亇 ASCII鐮佲榓鈥欎负97鈥楢鈥欎负65
绛旓細C璇█鏈塧toi銆乤tol銆乤tof绛夊簱鍑芥暟锛屽彲鍒嗗埆鎶夾SCII缂栫爜鐨勫瓧绗︿覆杞寲涓篿nt銆乴ong銆乫loat绫诲瀷鐨勬暟瀛銆俓x0d\x0a澶存枃浠讹細stdlib.h\x0d\x0a鍑芥暟鍘熷瀷锛歩nt atoi(const char* nptr);\x0d\x0a锛堝彟澶栦袱涓被浼硷級\x0d\x0a\x0d\x0a涓句釜渚嬪瓙锛歕x0d\x0achar *str="123";\x0d\x0aint num...
绛旓細char* itoa(int value,char*string,int radix);//value: 瑕佽浆鎹㈢殑鏁存暟锛宻tring: 杞崲鍚庣殑瀛楃涓,radix: 杞崲杩涘埗鏁帮紝濡2,8,10,16 杩涘埗銆俛toi (琛ㄧず ascii to integer)鏄鎶婂瓧绗︿覆杞崲鎴鏁村瀷鏁扮殑涓涓嚱鏁帮紝搴旂敤鍦ㄨ绠楁満绋嬪簭鍜屽姙鍏蒋浠朵腑銆俰nt atoi(const char *nptr) 鍑芥暟浼氭壂鎻忓弬鏁 nptr瀛楃涓...
绛旓細杞箟搴忓垪鍗曞紩鍙凤紝鍙屽紩鍙凤紝鍙嶆枩鏉犵殑浣跨敤鏂规硶銆5銆杞崲瀛楃锛璁惧畾杈撳嚭鐨勫舰寮忥紝鏁村瀷锛屾诞鐐瑰瀷锛屽瓧绗︼紝瀛楃涓銆6銆佹墦鍗版暟瀛楃殑涓嶅悓绫诲瀷锛%d鏁存暟锛%f娴偣鏁帮紝 %c瀛楃鍨嬶紝 %a瀛楃涓层傚彲浠ュ湪杞崲瀛楃%鍜宖涔嬮棿鍔犱笂鐐瑰拰鏁板瓧锛浠h〃鎵撳嵃娴偣鏁板肩殑灏忔暟浣嶆暟銆傛瘡涓绉嶈浆鎹㈠瓧绗﹀搴斾竴绉嶈緭鍑哄舰寮忋
绛旓細C璇█ 閲瀛楃 鏄敤 ascii 鐮佸寮忓瓨鏀剧殑 姣斿 '0'鐨凙SCII 鐮佹槸48锛屽鏋滀竴涓瓧绗h鏄鏁板瓧锛閭d箞,ch-'0' 鐨勫 灏辨槸 ch浠h〃鏁板瓧鐨勫 鍥犳 浜嬪厛 瑕佸垽鏂竴涓 姣斿 if (ch >= '0' && ch <='9') digi=ch -'0'
绛旓細1銆侀鍏堥渶瑕佺煡閬瀛楃鏈潵灏辨槸鐢╝scII鐮佸偍瀛樼殑锛屾墍浠ラ渶瑕佸嚱鏁杞崲銆傛墦寮VS銆2銆佽緭鍏ヤ竴娈佃浆鎹唬鐮併3銆佺孩鑹叉柟妗嗗唴锛屽皢鍙橀噺瀹氫箟涓篶har绫诲瀷锛岀劧鍚庤緭鍑虹殑鏃跺欒緭鍑轰负%d锛圓SII鐮侊級銆4銆佸啓濂戒唬鐮佸悗鎸変笅F7鎴栬呬緷娆¢夋嫨鏋勫缓-缁勫缓锛岀瓑寰呯粨鏋滃鏋滄墍绀哄嵆鍙傚鏋滃嚭鐜1 error锛岃〃绀轰唬鐮佸嚭閿欙紝鍏蜂綋閿欒鍙牴鎹彁绀烘帓闄ゃ5銆...
绛旓細c濡備綍灏嗗瓧绗1杞崲涓鏁村瀷鏁1锛氱涓绉嶏細鐢鏁板瓧瀛椾粯鍑哄噺鍘'0'鍗'1'-'0'(瀹冧咯鏄敤ASCII鐮佺浉鍑忕殑鍗49-48=1)銆傜浜岀锛氱敤鏁板瓧瀛椾粯鍑哄噺鍘48锛48鏄0鈥欑殑ASCII鐮侊級鍗'1'-48=1銆備緥濡傛兂鎶娾2鈥杞负2 int k;char b='2'k=b-48鎴杒=b-'0'C锛欳璇█鏄竴闂ㄩ氱敤璁$畻鏈虹紪绋嬭瑷锛屽簲鐢ㄥ箍娉涖侰...