鱼C论坛

 找回密码
 立即注册
查看: 6783|回复: 13

CString型字符串转化成浮点数出现的问题

[复制链接]
发表于 2012-11-18 18:39:51 | 显示全部楼层 |阅读模式
3鱼币
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
double a=atof((LPSTR)(LPCTSTR)str);
目的是想把输入的数字字符串转化成浮点数,出现的问题是a中只保存了str的第一个字符。
比如:我输入“123”结果却是a=1。   求解释和解决办法~~~~{:7_163:}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-18 18:39:52 | 显示全部楼层
  1. // zz.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <stdio.h>


  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7.         CString str = TEXT("123");
  8.         double data;
  9.         _stscanf( str, TEXT("%lf"), &data);
  10.         _tprintf(TEXT("%f\n"), data);
  11.         return 0;
  12. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-18 19:01:17 | 显示全部楼层
  1. // ee.cpp : Defines the entry point for the console application.
  2. //

  3. #include "stdafx.h"
  4. #include "ee.h"

  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif

  10. /////////////////////////////////////////////////////////////////////////////
  11. // The one and only application object

  12. using namespace std;

  13. int main(){
  14.         CString str="123";
  15.         cout<<(LPSTR)(LPCTSTR)str<<endl;
  16.         cout<<atof( (LPSTR)(LPCTSTR)str ) <<endl;
  17.         double a = atof( (LPSTR)(LPCTSTR)str );
  18.         cout <<a<<endl;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-18 19:02:45 | 显示全部楼层
你是不是在工程里使用了UNICODE/要把那个选项去掉,否则用两个字节表示一个字符。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-18 19:26:54 | 显示全部楼层
我看到了两个:UNICODE,_UNICODE 去哪个啊??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-18 19:27:30 | 显示全部楼层

我看到了两个:UNICODE,_UNICODE 去哪个啊??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-18 19:28:39 | 显示全部楼层
仰望天上的光 发表于 2012-11-18 19:02
你是不是在工程里使用了UNICODE/要把那个选项去掉,否则用两个字节表示一个字符。

去掉这个对其他有影响吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-18 19:57:18 | 显示全部楼层
仰望天上的光 发表于 2012-11-18 19:02
你是不是在工程里使用了UNICODE/要把那个选项去掉,否则用两个字节表示一个字符。

是Preprocessor definition里的UNICODE吧?我都删掉了 可是问题还是没解决。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-18 20:51:24 | 显示全部楼层
你用的不是VC6吧?在VS2010中,在“项目”-》“属性”-》“常规”-》“字符集”改为“未设置”,其它的IDE自己找找位置应该差不多
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-19 17:34:16 | 显示全部楼层
仰望天上的光 发表于 2012-11-18 20:51
你用的不是VC6吧?在VS2010中,在“项目”-》“属性”-》“常规”-》“字符集”改为“未设置”,其它的IDE自 ...

我用的环境是evc,你说的那个改动我也没找到。。。网上查到UNICODE方式用_wtof(),试了试。。报错。。
能不能教我用别的方法实现啊???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-19 20:48:42 | 显示全部楼层
_stscanf类似原先的sscanf
_tprintf类似呀un现的printf
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-20 13:21:55 | 显示全部楼层
仰望天上的光 发表于 2012-11-19 20:48
_stscanf类似原先的sscanf
_tprintf类似呀un现的printf

字符串转换的问题是解决了,,,但是执行到_tprintf(TEXT("%f\n"), data);界面后面就会出现一个控制台程序。。。这怎么行。。。。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-20 13:51:05 | 显示全部楼层
花落、季 发表于 2012-11-20 13:21
字符串转换的问题是解决了,,,但是执行到_tprintf(TEXT("%f\n"), data);界面后面就会出现一个控制台程序 ...

_tprintf(TEXT("%f\n"), data);只是吧数据在控制台打印出来验证下data里的值是对的,GUI程序不要这句就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-11-20 15:02:07 | 显示全部楼层
仰望天上的光 发表于 2012-11-20 13:51
_tprintf(TEXT("%f\n"), data);只是吧数据在控制台打印出来验证下data里的值是对的,GUI程序不要这句就可 ...

{:7_148:}再次感谢光老师~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 08:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表