liudeee 发表于 2009-6-8 00:27:00

今天刚开始学VC++。。觉得好难哈,就写了以个入门的函数还不对,是关于FORMAT的。大家帮

先说下过程吧。看了一本c++的教材,就跟着练,他用的Visual Studio 2005,
首先新建了以个MFC的可执行工程。
然后在类视图里打开CMy1View::OnDraw
然后在下面添加代码的地方就写了下面几句。
int a;
CString strOutput;
a = 123;
strOutput.Format("%d",a);
pDC -> TextOut(0,0,strOutput);

编译的时候出现下面的错误错误        1        error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char ”转换为“const wchar_t *”       

错误在strOutput.Format("%d",a);这一行

如果就写个
pDC -> TextOut(0,0,"Hello World");
这个编译就出现了
错误        1        error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char ”转换为“const CString &”       

今天才开始学VC++, 招数抄了个程序都不对,挺受打击。
大家帮我下吧!

./emotion/em040.gif

zxq6 发表于 2009-6-8 00:39:47

我没用vs2008,我用的是VC98,看了下,下面的代码没问题。
         int n=123;
        CString a;
        a.Format("%d",n);
        MessageBox(a);
不过不知道楼主的pDC是虾米玩意,不好继续帮忙验证了。

Heraclitus 发表于 2009-6-8 01:03:01

字符常量前加“L”看看,比如L"%"。

这样:pDC -> TextOut(0,0,L"Hello World");

L是一个宏,表示字符串的本地化,你用中文系统,编译器默认为宽字符串wchar。

你调开MFC源文件,会发现都是加L的,这是一种编程规范。

很久以前学的,不知对不对。

McuPlayer 发表于 2009-6-8 02:51:25

问题就出在“wchar_t”上,看看他的定义你能了解更多

因为存在字符编码的问题,ANSI码还是UNICODE等,自然不能自动转换。

Heraclitus说的对,使用字符串的本地化宏,可以简化此问题的处理。
当你使用UNICODE的时候,它会自动帮你转换成宽字符的,当使用ANSI编码时,它就保持原样不变

electrician 发表于 2009-6-8 03:55:27

如果用Visual Studio 2005的话,就学C#吧,不要再折腾VC了.

the2255 发表于 2009-6-8 08:12:51

int a;
CString strOutput;
a = 123;
strOutput.Format(TEXT("%d"),a); //!!!!!!!!!!!!!!!!!!!!!!!!!
pDC -> TextOut(0,0,strOutput);

Heraclitus 发表于 2009-6-8 08:22:18

C#的好处是比较省事,坏处是搞不清机理,不可控,速度慢。

VC++的好处是机理比较可控,坏处是要操心的东西比较多。当时为了搞清MFC,曾经一层层跟踪到最底层。速度有时也慢。

汇编则是完全可控,坏处是什么都得操心。

不论什么语言,要编出比较完美的代码都不容易。既要有好的结构,又要有好的速度。特别是多线程处理,无论是C#还是VC都不是容易的事。线程的同步与调度,封装与通信,能把头搞得两个大。

kevinzcp 发表于 2009-6-8 08:42:11

我学的是孙鑫的教材感觉不错,总结了他的教学经验是一切从实用出发而教的,建议用这个,而且带有视频教程,强烈建议使用!

electrician 发表于 2009-6-8 09:08:33

VC现在应用范围很窄,花时间也多,何苦来哉!

Heraclitus 发表于 2009-6-8 09:22:55

用VC,就像用汇编一样,只是不信一种语言可以解决所有问题。

实际上C#也不能说真的很高级。simlink的仿真流图就比它高级得多,直接利用抽象的数学语言,同时也表达出了流程间的并行关系。

simlink又很严格,可以直接编译成机器代码。我认为simlink才是程序的发展方向。

electrician 发表于 2009-6-8 09:33:33

并不是高级和低级的问题,C#相比VC应用范围要广很多,特别是现在WEB泛滥的情况下.

liudeee 发表于 2009-6-8 11:16:19

按照5楼和2楼朋友说的方法修改了之后,成功通过。在这想在问下,
Visual studio 2005 和 Visual studio 2008下的VC++ 有哪里不同呢?

Heraclitus 发表于 2009-6-8 12:12:01

很早以前学的VC,有什么不同就讲不清了。

alexmayer 发表于 2009-6-12 10:58:32

Visual Studio6.0对应vc6
Visual Studio2003 对应vc7
Visual Studio2005       8
Visual Studio2008       9

马上2010就要出正式版了。

liudeee 发表于 2009-6-12 11:04:49

咋更新这么快。。都还啥都没学呢。。。无奈了。

asktutu 发表于 2009-6-12 11:28:33

unicode.
页: [1]
查看完整版本: 今天刚开始学VC++。。觉得好难哈,就写了以个入门的函数还不对,是关于FORMAT的。大家帮