原文地址:http://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
1、插入器(<<)
向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write
Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
2、析取器(>>)
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取
一个指定类型(即变量x的类型)的数据。
在C++中,对文件的操作是通过stream的子类fstream(file
stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
一、打开文件
在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename: 要打开的文件名
......
原文地址:http://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
1、插入器(<<)
向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write
Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
2、析取器(>>)
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取
一个指定类型(即变量x的类型)的数据。
在C++中,对文件的操作是通过stream的子类fstream(file
stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
一、打开文件
在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename: 要打开的文件名
......
本文关键词: c++ 含义
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
分析
显然,头文件中的编译宏“#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。
那么
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
的作用又是什么呢?我们将在下文一一道来。
3.深层揭密extern "C"
extern ......
本文关键词: c++ 含义
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
分析
显然,头文件中的编译宏“#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。
那么
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
的作用又是什么呢?我们将在下文一一道来。
3.深层揭密extern "C"
extern ......
对于C编写程序,大部分都可以通过,但是不会完全兼容,举两个例子:
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc -g -o test test.c
g++ -g -o test test.c
因为C++检查更加严格,C没有这么严格。
大家可以比较一下,gcc不会报错,g++会报错。
如果大家还有新的case,欢迎补充。 ......
对于C编写程序,大部分都可以通过,但是不会完全兼容,举两个例子:
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc -g -o test test.c
g++ -g -o test test.c
因为C++检查更加严格,C没有这么严格。
大家可以比较一下,gcc不会报错,g++会报错。
如果大家还有新的case,欢迎补充。 ......
何为指针 ?
指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。
开始
如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针:
int* pNumberOne;
int* pNumberTwo;
注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。
现在,让我们把这些指针指向一些实际的值吧:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
“&”标志应该读作“the address of(……的地址)”,它的作用是返回一个变量的内存地址,而不是这个变量本身。那么在这个例子中,pNumberOne就是some_number的地址,亦称作pNumberOne指向some_number。
现在,如果我们想使用some_number的地址的话,那么我们就可以使用pNumberOne了。如果我们希望经由pNumberOne而使用some_number的值的话,我们可以用*pN ......
何为指针 ?
指针基本上和其它的变量一样,唯一的一点不同就是指针并不包含实际的数据,而是包含了一个指向内存位置的地址,你可以在这个地址找到某些信息。这是一个很重要的概念,并且许多程序或者思想都是将指针作为它们的设计基础,例如链表。
开始
如何定义一个指针?呃,就像定义其它的变量一样,不过你还需要在变量名之前添加一个星号。例如,下面的代码创建了两个指向整数的指针:
int* pNumberOne;
int* pNumberTwo;
注意到变量名的前缀“p”了吗?这是编写代码的一个习惯,用来表示这个变量是一个指针。
现在,让我们把这些指针指向一些实际的值吧:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
“&”标志应该读作“the address of(……的地址)”,它的作用是返回一个变量的内存地址,而不是这个变量本身。那么在这个例子中,pNumberOne就是some_number的地址,亦称作pNumberOne指向some_number。
现在,如果我们想使用some_number的地址的话,那么我们就可以使用pNumberOne了。如果我们希望经由pNumberOne而使用some_number的值的话,我们可以用*pN ......
今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/source/2252840
3、MSYS 可以点此下载
4、gdb 可以点此下载
开始
准备好上述材料后,就可以进入安装阶段。
首先,安装netbeans,这个不做过多介绍,就按照安装向导一步一步进行,但注意下载的netbeans版本要包含c/c++插件的。
第二,安装MinGW,下载我提供的MinGW,里面有binutils-2.17.50-20060824-1.tar.gz 、 gcc-core-4.2.1-sjlj-2.tar.gz 、gcc-g++-4.2.1-sjlj-2.tar.gz、mingw32-make-3.81-20080326-2.tar.gz、mingwrt-3.15.1-mingw32.tar.gz、mingwrt-3.15.1-mingw32-dev.tar.gz、mingwrt-3.15.1-mingw32-dll.tar.gz、w32api-3.11.tar.gz 八个文件,将所有文件解压到一个文件夹下,如C:\MinGW下,然后将C:\MinGW\bin添加到路径中 并将C:\MinGW\bin下的g++-sjlj.exe文件复制为g++.exe,将C:\MinGW\bin下的gcc-sjlj.exe复制为gcc.exe 此时, ......
今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/source/2252840
3、MSYS 可以点此下载
4、gdb 可以点此下载
开始
准备好上述材料后,就可以进入安装阶段。
首先,安装netbeans,这个不做过多介绍,就按照安装向导一步一步进行,但注意下载的netbeans版本要包含c/c++插件的。
第二,安装MinGW,下载我提供的MinGW,里面有binutils-2.17.50-20060824-1.tar.gz 、 gcc-core-4.2.1-sjlj-2.tar.gz 、gcc-g++-4.2.1-sjlj-2.tar.gz、mingw32-make-3.81-20080326-2.tar.gz、mingwrt-3.15.1-mingw32.tar.gz、mingwrt-3.15.1-mingw32-dev.tar.gz、mingwrt-3.15.1-mingw32-dll.tar.gz、w32api-3.11.tar.gz 八个文件,将所有文件解压到一个文件夹下,如C:\MinGW下,然后将C:\MinGW\bin添加到路径中 并将C:\MinGW\bin下的g++-sjlj.exe文件复制为g++.exe,将C:\MinGW\bin下的gcc-sjlj.exe复制为gcc.exe 此时, ......
step one:将.pc文件预编译为.c
[ecif@localhost zyctest]$ proc sample1.pc
显示信息:
Pro*C/C++: Release 10.2.0.1.0 - Production on Tue Apr 13 14:07:05 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
System default option values taken from: /home/oracle/oracle/product/10.2.0/db_1/precomp/admin /pcscfg.cfg
step two:编译.c文件,生成目标文件
gcc -L$ORACLE_HOME/precomp/public -I/home/oracle/oracle/product/10.2.0/db_1/precomp /public/ -c sample1.c
提示警告:
sample1.c: In function `main':
sample1.c:236: warning: return type of 'main' is not `int'
step three:链接目标文件,生成可执行程序
gcc -L$ORACLE_HOME/lib -lclntsh -o sample1 sample1.o
警告:
sample1.o(.text+0x381): In function `main':
: warning: the `gets' f ......