1. 标准CC++库提供了一些转换工具。但是它们在易用性、扩展型和安全型上各有不同。
  2. 例如,以atoi为代表的一系列标准C函数就有一些限制:
  3. * 只支持单向转换:从文本到内部数据类型。要用C库函数实现另一个方向的转换,要么使用不太方便并且有损安全性的sprintf,要么牺牲可移植性,使用非标准函数,例如itoa
  4. * 支持的类型只是内建数值类型的一个子集,即intlongdouble
  5. * 支持的类型不能用统一的方式扩展。例如从字符串表示转为complex或者rational
  6. strtol为代表的标准C函数也有同样的基本限制,但它们对转换过程提供了更好的控制。然而,通常情况下这样的控制既不需要也没人用。scanf系列函数甚至提供了更多的控制,但同样缺少安全性和易用性。
  7. 标准C++库为这种转换提供了stringstream。它提供了大量格式控制,并且可以通过以文本中介进行任意类型之间的转换。但是对于简单转换,直接用stringstream可能显得很笨拙(引入额外的局部变量,并失去了嵌在表达式里使用的方便性),或者很难懂(在表达式里创建stringstream的临时对象)。Facets为控制文本的表现形式提供了全面的概念和机制,但是它相对较高的门槛使简单转换也牵涉到太深的技术。
  8. lexical_cast模板函数提供了方便而且统一的形式来进行任意类型(当它们可以表示为文本)之间的转换。因为你可以把这种转换方便地写在表达式内,所以它可以简化你的程序。对于更复杂的转换,例如需要对精度或者格式作一些比lexical_cast缺省行为更严格的控制时,那么还是建议你用常规的stringstream方法。如果是数值到数值的转换,numeric_cast的行为要比lexical_cast更合理些
  9.  
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. #include<string.h>
  13. int tonum(char *string)
  14. {
  15. int n=,i;
  16. if(*string=='-')
  17. i=-;
  18. else
  19. i=;
  20. while(!(*string>=''&&*string<=''))
  21. string++;
  22. while(*string>=''&&*string<='')
  23. {
  24. n*=;
  25. n+=*string-'';
  26. string++;
  27. }
  28. return n*i;
  29. }
  30. char * tostring(int n,char *p)
  31. {
  32. char *q;
  33. char *str=(char*)malloc();
  34. if(p==NULL)
  35. return NULL;
  36. if(n<)
  37. {
  38. strcpy(str,"-");
  39. n=abs(n);
  40. }
  41. else
  42. strcpy(str,"");
  43. p[]=n/+'';
  44. n=n%;
  45. p[]=n/+'';
  46. n=n%;
  47. p[]=n/+'';
  48. n=n%;
  49. p[]=n/+'';
  50. n=n%;
  51. p[]=n+'';
  52. p[]='\0';
  53. q=p;
  54. while(*q!='\0'&&*q=='')
  55. q++;
  56. if(*q=='\0')
  57. return p;
  58. strcpy(p,q);
  59. if(!strcmp(str,"-"))
  60. {
  61. strcat(str,p);
  62. strcpy(p,str);
  63. }
  64. free(str);
  65. return p;
  66. }
  67. int main()
  68. {
  69. char *string=new char[];
  70. strcpy(string,"-123");
  71. printf("%d\n",tonum(string));
  72. printf("--------------------------\n");
  73. printf("%s",tostring(-,string));
  74. getchar();
  75. delete string;
  76. return ;
  77. }
  78.  
  79. #include <windows.h>
  80. #include <iostream>
  81. using std::cout;
  82. using std::cin;
  83. using std::endl;
  84. void int2str(int n,char * &p);
  85. void str2int(const char *str,int& num);
  86. int main()
  87. {
  88. //int to string
  89. int num;
  90. char* p=NULL;
  91. cout<<"input a num:";
  92. cin>>num;
  93. int2str(num,p);
  94. cout<<p<<endl;
  95. //string to int
  96. char arr[];
  97. char *buf=arr;
  98. cout<<"input a string that is num:";
  99. cin>>buf;
  100. int n=;
  101. str2int(buf,n);
  102. cout<<n;
  103. system("pause");
  104. return ;
  105. }
  106. void int2str(int n,char * &p)
  107. {
  108. int i=,len=;
  109. char buf[];
  110. memset(buf,,sizeof(buf)/sizeof(buf[]));
  111. int temp=(n<?\
  112. -n:n);
  113. while(temp)
  114. {
  115. buf[i++]=temp%+'';
  116. temp=temp/;
  117. }
  118. len=i;
  119. if(n<)
  120. {
  121. p=(char *)malloc(len*sizeof(char)+);
  122. p[]='-';
  123. for(i=len-;i>=;i--)
  124. {
  125. p[len-i]=buf[i];
  126. }
  127. p[len+]='\0';
  128. }
  129. else
  130. {
  131. p=(char *)malloc(len*sizeof(char)+);
  132. for(i=len-;i>=;i--)
  133. {
  134. p[len-i-]=buf[i];
  135. }
  136. p[len]='\0';
  137. }
  138. }
  139. void str2int(const char *str,int& num)
  140. {
  141. const char *p=str;
  142. int temp=;
  143. if(*p>''||*p<'')
  144. ++p;
  145. int len=strlen(p);
  146. for(int i=;i<len;i++)
  147. {
  148. temp=temp*+(*p++ - '');
  149. }
  150. num=(*str=='-'?(-temp):temp);
  151. }
  152.  
  153. int atoi(const char *s)
  154. {
  155. char *p = s;
  156. char c;
  157. int i = ;
  158. while(c=*p++)
  159. {
  160. if(c>='' && c <='')
  161. {
  162. i = i* + (c-'');
  163. }
  164. else
  165. return -; //Invalid string
  166. }
  167. return i;
  168. }
  169. ********************************************************************************************
  170. itoa 把一整数转换为字符串
  171. 例程序:
  172. #include <ctype.h>
  173. #include <stdio.h>
  174. void itoa (int n,char s[]);
  175. //atoi 函数:将s转换为整形数
  176. int main(void )
  177. {
  178. int n;
  179. char s[];
  180. printf("Input n:\n");
  181. scanf("%d",&n);
  182. printf("the string : \n");
  183. itoa (n,s);
  184. return ;
  185. }
  186. void itoa (int n,char s[])
  187. {
  188. int i,j,sign;
  189. if((sign=n)<)//记录符号
  190. n=-n;//使n成为正数
  191. i=;
  192. do{
  193. s[i++]=n%+'';//取下一个数字
  194. }while ((n/=)>);//删除该数字
  195. if(sign<)
  196. s[i++]='-';
  197. s[i]='\0';
  198. for(j=i;j>=;j--)//生成的数字是逆序的,所以要逆序输出
  199. printf("%c",s[j]);
  200.  
  201. }
  202.  
  203. java 怎样把字符串数组如 String array[]={"","","","",""};
  204. 转化成int型的
  205. String array[] = { "", "", "", "", "" };
  206. int[] number = new int[array.length];
  207. for (int i = ; i < array.length; i++) {
  208. int num = Integer.parseInt(array[i]);// 转换
  209. number[i] = num;
  210. }
  211. System.out.println(number.length);
  212.  
  213. # include <stdio.h>
  214. # include <stdlib.h>
  215.  
  216. int main ()
  217. {
  218. int num_int;
  219. double num_double;
  220. char str_int[] = ""; //将要被转换为整型的字符串
  221. char str_double[] = "436.55"; //将要被转换为浮点型的字符串
  222.  
  223. num_int = atoi(str_int); //转换为整型值
  224. num_double = atof(str_double); //转换为浮点型值
  225.  
  226. printf("num_int: %d\n", num_int);
  227. printf("num_double: %lf\n", num_double);
  228.  
  229. return ;
  230. }
  231.  
  232. #include <iostream> using namespace std; int str2int(const char *str) { int temp = ; const char *ptr = str; //ptr保存str字符串开头8 9 if (*str == '-' || *str == '+') //如果第一个字符是正负号,10 { //则移到下一个字符11 str++;12 }13 while(*str != 0)14 {15 if ((*str < '0') || (*str > '9')) //如果当前字符不是数字16 { //则退出循环17 break;18 }19 temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值20 str++; //移到下一个字符21 } 22 if (*ptr == '-') //如果字符串是以"-"开头,则转换成其相反数23 {24 temp = -temp;25 }26 27 return temp;28 }29 30 int main()31 {32 int n = 0; 33 char p[10] = "";34 35 cin.getline(p, 20); //从终端获取一个字符串36 n = str2int(p); //把字符串转换成整型数37 38 cout << n << endl;39 40 return 0;41 }

字符转换(C、C++)的更多相关文章

  1. 【JavaScript】JS 中 原始字符串 和 HTML 字符转换

    参考资料:http://www.sjyhome.com/javascript/js-html-escape.html JS转换HTML转义符 SJY • 发表于:2013年10月05日 17:04 • ...

  2. 带毫秒的字符转换成时间(DateTime)格式的通用方法

    C#自身有更好的方式,Net任意String格式转换为DateTime类型 ====================================================== 原文 ==== ...

  3. sql字符转换函数大全

    删除空格 有两个函数,TTRIM()和LTRIM(),可以用来从字符串中剪掉空格.函数LTRIM()去除应该字符串前面的所有空格:函数RTRIM()去除一个字符串尾部的所有空格.这些和vbscript ...

  4. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  5. js字符转换成整型 parseInt()函数规程Number()函数

    今天在做一个js加法的时候,忘记将字符转换成整型,导致将加号认为是连接符,  在运算前要先对字符井行类型转换,使用parseInt()函数   使用Number()将字符转换成int型效果更好

  6. mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现例如:将pony表 ...

  7. CString string char* char 之间的字符转换(多种方法)

    在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...

  8. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

  9. vc++字符转换

    测试环境: vs2008 开发语言:C++ #include <iostream>#include <windows.h>#include <string> // ...

  10. [c/c++] programming之路(6)、ASCII码,数据类型、随机数、字符转换及拼接等

    一.变量 #include<stdio.h> #include<stdlib.h> void main0(){ //数据使用必须在范围内,否则产生溢出 unsigned +;/ ...

随机推荐

  1. Jackson

    Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 1. 下载依赖库jar包 Jackson的jar all下载地址:http:// ...

  2. 【转】自学成才秘籍!机器学习&深度学习经典资料汇总

      小编都深深的震惊了,到底是谁那么好整理了那么多干货性的书籍.小编对此人表示崇高的敬意,小编不是文章的生产者,只是文章的搬运工. <Brief History of Machine Learn ...

  3. finnal 评论 II

    新蜂团队:俄罗斯方块界面设计给人眼前一亮的感觉,很喜欢他们界面的颜色搭配.功能上实现了俄罗斯方块的基本功能,并且没有bug.最重要的是游戏有自己的创新点在里面,很喜欢游戏的瞄准功能.总的来说项目完成的 ...

  4. ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格

    下载 PHPExcel(https://github.com/PHPOffice/PHPExcel) 把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下 一.导入 Ex ...

  5. 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器

    阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...

  6. 在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件

    原文:在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件 http://hi.baidu.com/aspxdiyer/blog/item/5515a69943232f1 ...

  7. 升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    系统升级到macOS 10.12后启动mysql后,在终端输入mysql 报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' ...

  8. sparksql udf的运用----scala及python版(2016年7月17日前完成)

    问:udf在sparksql 里面的作用是什么呢? 答:oracle的存储过程会有用到定义函数,那么现在udf就相当于一个在sparksql用到的函数定义: 第二个问题udf是怎么实现的呢? regi ...

  9. android中如何获取xml界面里的非自定义属性

    获取自定义属性大家都很熟悉了,就不多说了(定义declare-styleable,context.obtainStyledAttributes巴拉巴拉...) 下面我们说一下怎么获取非自定义的属性,比 ...

  10. SpringMVC原理解析-DispatcherServlet初始化以及请求处理过程