string字符串转C风格字符串 进而转换为数字
要求如题
头文件stdlib.h中有一个函数atof() 可以将字符串转化为双精度浮点数(double)
double atof(const char *nptr);
此字符串为C风格字符串,因此需要将string转化为C风格字符串 此时可用到一个函数c_str()
const char *c_str()
参考资料: string中c_str()、data()、copy(p,n)函数的用法
在使用c_str()时遇到了一个问题–此函数的返回值为const char * 因为是const数据类型,因此只能在定义的时候赋初值。这就造成了在循环内的时候很难整。
而且,还会出现以下问题
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s=”1234”;
c = s.c_str();
//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在对指针c完成赋值操作之后进行的,故此处并没有错误)
在vc++2010中提示的错误原因:
[](http://baike.baidu.com/pic/c_str/2622670/0/500fd9f9d72a6059812f785d2834349b033bbabe?fr=lemma&ct=single ”
vc++2010中提示的错误原因”)
应该这样用:
char c[20];
string s=”1234”;
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
c_str()返回的是一个分配给const char的地址,其内容已设定为不可变更,如果再把此地址赋给一个可以变更内容的char变量,就会产生冲突,在2010中是不被允许的。但是如果放入函数调用,或者直接输出,因为这些函数和输出都是把字符串指针作为 const char*引用的,所以不会有问题。
——来自百度百科
如此一来 就可以解决问题啦
string字符串转C风格字符串 进而转换为数字的更多相关文章
- C风格字符串与C++风格字符串
C风格字符串与C++风格字符串 C风格字符串:对字符串进行操作的 C 函数定义在头文件<cstring>中: 1. 字符串定义:char* result: 2. 字符串的最后一个字符是nu ...
- C++ 标准头文件与C头文件区别与联系以及C风格字符串
1.cstdlib是C++里面的一个常用头文件, 等价于C中的<stdlib.h>. 2.一般一个带“.h” 扩展名的库文件,比如iostream.h.这是延续C语言的,为了兼容C.在新标 ...
- 第6章 字符串(上)——C风格字符串
6.1 C-strings(C 风格字符串) C风格字符串: 字符数组是元素为字符型的数组,字符串是以空字符'\0' 作为数组最后一个元素的字符数组. 如果指定了数组的大小,而字符串的长度又小于数组大 ...
- String与C风格字符串转换
String字符串转换为C风格字符串需要利用string类的成员函数c_str().而C风格字符串转换转换为string字符串可以直接利用运算符=.首先介绍c_str()函数原型: const val ...
- C风格字符串和C++ string 对象赋值操作的性能比较
<<C++ Primer>> 第四版 Exercise Section 4.3.1 部分Exercise 4.2.9 习题如下: 在自己本机执行如下程序,记录程序执行时间: # ...
- 标准库string与C风格字符串
返回字符串的长度 string标准库 #include<iostream> #include<cstring> using namespace std; int main() ...
- C 风格字符串、string 类要点总结
1. C风格字符串 1.1 其它 头文件<cstring> 特殊性质:C风格字符串以空字符\0结尾 1.2 读取一行的区别 1.2.1 cin.getline(array1,n,char) ...
- c风格字符串
1.字符数组截取 有当然有了,应均包含在<string.h>中. 有strncpy,strncat.可以帮你从任何位置,取得任意合法长度的字符串. 用法基本同strcpy,strcat. ...
- 剑指Offer面试题:35.将字符串转换为数字
一.题目:将字符串转换为数字 题目:写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 二.代码实现 (1)考虑输入的字符串是否是NULL.空字符 ...
随机推荐
- 翻译-你必须知道的28个HTML5特征、窍门和技术
摘自by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=1058 前端的发 ...
- linux中的 tar命令的 -C 参数,以及其它一些参数(转)
linux中的 tar命令的 -C 参数,以及其它一些参数 复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.htmltar命令 ...
- CSU 1004并查集
试题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1004 题目分析: 讲述的主要是是否可以通过公交直接到达自己的目的地,如果最后将问题转换为 ...
- Hunters
Hunters Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submi ...
- android 瀑布流效果(仿蘑菇街)
我们还是来看一款示例:(蘑菇街) 看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此.就如我们的方角图形,斯通见惯后也就出 ...
- js里写网页结构, 传函数参数
如题 "<td align='center' height='30px' width='80px'><a href='javascript:sort(\"&quo ...
- JSP注释及scriptlet <%局部%><%!全局%><%=输出%>
显示注释: <!--注释内容-->> 隐式注释: 1. // 2./* */ 3. <%-- 注释内容--%> <!-- 这个注释客户端就可以看见 --> & ...
- android view构造函数研究
上周遇到了SurfaceView的constructor的问题,周末决定略微细致地研究一下这个令人发指的玩意. SurfaceView是View的子类,与View一样有三个const ...
- git 使用总结
- 使用anyremote进行远程鼠标控制
源代码安装 http://anyremote.sourceforge.net/pre.html 安装 -xtest apt-get install libxtst-dev 安装 glib sudo ...