有些时候,一些很简单的事情实现起来并不容易。例如,我们想让一个变量值显示在屏幕上。也许你知道在C++中怎么做,但在VC++6中,要用下面的方法实现:
int x = 3;
cout << "x is " << x << endl;
就这么简单。不论你学的“C++入门课”怎样,我打赌你能发现的与这两行代码相似的东西不足你在课程中学到的10%,对吗?
输出到屏幕
现在,如果要在VC++.NET中创建可管理的C++程序该怎么做?下面是我创建的main():
int _tmain(void)
{
// TODO: Please replace the sample code below
// with your own.
Console::WriteLine(S"Hello World");
return 0;
}
现在你可以把应用Cout的代码拷贝到main()中,在加入了include声明后,就可以执行:
#include <iostream.h>
// ...
Console::WriteLine(S"Hello World");
int x = 3;
cout << "x is " << x << endl;
这时,你会看到一个警告:
warning C4995: '_OLD_IOSTREAMS_ARE_DEPRECATED':
name was marked as #pragma deprecated
解决的方法:借用STL中的IO流的代码,并且导入std 名称空间:
#include <iostream>
using namespace std;
现在编译并运行这段代码。但是让我不解的是,在程序中发现作为cout应用的Console::WriteLine()。另外,Console::WriteLine很整洁。就像printf,它在字符串中使用占位符显示变量值应该放到哪。下面是一个c#控制程序中的代码:
int x = 3;
Console.WriteLine("x is {0}",x);
{0}是一个占位符,第二个参数的值截止到占位符出现的位置。因此我想像在c#中一样,在可管理的c++程序中一直使用Console::WriteLine。但是如果你把代码直接拷到c++程序中,并将.改为::,程序不能通过编译。错误显示为: