| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2561 人关注过本帖
标题:MFC中字符串转化数型有函数么?
只看楼主 加入收藏
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
MFC中字符串转化数型有函数么?
FORMAT是把别的类型转化成字符型,那我要转换回去呢?
比如
CString str="345";
我想通过str使nNum=345;
MFC中有这样的函数吗?
搜索更多相关主题的帖子: 函数 MFC 字符 
2010-07-15 10:26
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:20 
nNum = atoi(str.GetBuffer())

授人以鱼不如授人以渔
2010-07-22 16:10
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
收藏
得分:0 
额,刚试了一下,运行出错了
提示好像nNum应该在()里
2010-07-22 17:36
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
以下是引用毕业旅行在2010-7-22 17:36:35的发言:

额,刚试了一下,运行出错了
提示好像nNum应该在()里
什么提示错误?

授人以鱼不如授人以渔
2010-07-22 18:09
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
收藏
得分:0 
以下是引用mxs810在2010-7-22 18:09:32的发言:

什么提示错误?
我试了下,里面那个括号里需要填数字就对了,但是里面那个数字是啥意思啊,我咋填啥效果都一样的,我看提示有说里面好像是一个啥长度(LENGTH)
atoi是啥哦,可以帮解释下吗
2010-07-22 21:58
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
既然有函数名了,你可以查查帮助,看看函数的详细用法?
你具体什么问题我没有搞懂,要不把你的测试代码贴过来看看~~
手头上应该有那种c/c++库函数相接的说明书吧?

以下是帮助文件的内容
Syntax:
  #include <stdlib.h>
  int atoi( const char *str );

The atoi() function converts str into an integer, and returns that integer. str should start with some sort of number, and atoi() will stop reading from str as soon as a non-numerical character has been read. For example,

   i = atoi( "512.035" );            

would result in i being set to 512.


授人以鱼不如授人以渔
2010-07-23 09:12
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
哦,我知道了,你的测试平台不支持GetBuffer(void) 操作啊!!
这样试试:
nNum = atoi(str.GetBuffer(str.GetLength()))

备注:
CString::GetBuffer

LPTSTR GetBuffer( int nMinBufLength );
  throw( CMemoryException );

返回值:一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。

参数: nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。  

说明:
此成员函数返回一个指向CString对象的内部字符缓冲区的指针。返回的LPTSTR不是const,因此可以允许直接修改CString的内容。
如果你使用由GetBuffer返回的指针来改变字符串的内容,你必须在使用其它的CString成员函数之前调用ReleaseBuffer函数。
在调用ReleaseBuffer之后,由GetBuffer返回的地址也许就无效了,因为其它的CString操作可能会导致CString缓冲区被重新分配。如果你没有改变此CString的长度,则缓冲区不会被重新分配。
当此CString对象被销毁时,其缓冲区内存将被自动释放。
注意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer的长度参数传递-1,ReleaseBuffer将对该缓冲区执行strlen来确定它的长度。

示例:下面的例子说明了如何用CString::GetBuffer。
// CString::GetBuffer例子
CString s( "abcd" );
#ifdef _DEBUG
   afxDump << "CString s" << s << "\n";
#endif
LPTSTR p = s.GetBuffer( 10 );
strcpy( p, "Hello" ); // 直接访问CString对象。
s.ReleaseBuffer( );
#ifdef _DEBUG
   afxDump << "CString s " << s << "\n";
#endif



授人以鱼不如授人以渔
2010-07-23 09:41
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
收藏
得分:0 
回复 7楼 mxs810
nNum = atoi(str.GetBuffer())
我看了下你贴的东西,有些地方看的有些生涩;
我理解了下atoi后面需要跟的是字符串的指针,而.GetBuffer就是获得str的指针
GetBuffer()括号里的那个字符数的最小容量是啥意思啊,我读了两遍没理解。
我用的Visual C++提示上面那个括号里必须要填数字。
2010-07-23 13:58
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
从网上搜一下关于CString的内容好好研读一下吧,
GetBuffer是这样定义的:
LPTSTR GetBuffer( int nMinBufLength );
当然必须要添个整形参数了!!!

授人以鱼不如授人以渔
2010-07-23 17:51
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
收藏
得分:0 
回复 9楼 mxs810
恩。。。我自己去学习下先。。。
2010-07-23 19:57
快速回复:MFC中字符串转化数型有函数么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016607 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved