博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 基本操作
阅读量:2381 次
发布时间:2019-05-10

本文共 7102 字,大约阅读时间需要 23 分钟。

基础值大小和取值范围

类型 大小(字节) 取值范围
bool 1 true 或 false
int 4 -2147483648~2147483647
short int 2 -32768~32767
long int 4 -2147483648~2147483647
long long int 8 -9223372036854775807~9223372036854775807
unsigned int 4 0~4294967395
unsigned short int 2 0~65535
unsigned long int 4 0~4294967395
char 1 256 个字符
wchar_t 2 256 个字
float 4 10^-37~10^38
double 8 10^-307~10^308
long double 16 10^-4931~10^4932

基本位操作符

注:一下的数字为unsigned int型数据

| 按位或运算符

eg:2|4=6;2|6=6;

& 按位与运算符

eg:2&4=0;2&6=2;

^ 按位异或运算符

eg: 2^4=6;2^6=4;

~ 按位求反运算符

eg: ~2=4294967393

>> 运算符把位向右移动

eg: 8>>2=2

<< 运算符把位向左移动

eg:2<<2=8


算符优先级

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

()

圆括号

(表达式)/函数名(形参表)

.

成员选择(对象)

对象.成员名

->

成员选择(指针)

对象指针->成员名

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

++

自增运算符

++变量名/变量名++

单目运算符

自减运算符

–变量名/变量名–

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

输入输出

控制台输入输出

#include < stdio.h >int main()   {       int a,b;       while(scanf("%d %d",&a, &b) != EOF)              printf("%d\n",a+b);      return 0; }

注:scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, &a, &b );如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。EOF是一个预定义的常量,等于-1。


#include < iostream >    using namespace std;int main(){       int a,b;       while(cin >> a >> b)            cout << a+b << endl;       return 0;}

>>输入操作符返回流对象的引用,cin >> x 返回istream&,cout << x返回oostream&

若流被标记错误(读取失败)就返回false.
ctrl+z,F6可跳出循环,这代表eof(文件结束符)
当在缓冲区读取到的数据与>>后面的变量类型不匹配的时候,就会结束。


字符串输入

输入是一整行的字符串的,C语法:

    char buf[20];
    gets(buf);
  C++语法:
    如果用string buf;来保存:
   getline( cin , buf );
    如果用char buf[ 255 ]来保存:
   cin.getline( buf, 255 );
    scanf(“ %s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;
    若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔。
    通常情况下,接受短字符用scanf函数,接受长字符用gets函数。
     而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。
    getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:
  istream& getline(char line[], int size, char endchar = ‘\n’);
    不用管它的返回类型,来关心它的三个参数:
    char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。
    int size : 最多接受几个字符?用户超过size的输入都将不被接受。
    char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。
    结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。
    char name[4];cin.getline(name,4,’\n’);
    由于 endchar 默认已经是 ‘\n’,所以后面那行也可以写成:
    cin.getline(name,4);
    最后需要说明的是,C++的输入输出流用起来比较方便,但速度比C要慢得多。在输入输出量巨大时,用C++很可能超时,应采用C的输入输出


文件输入输出

#include 
int main() { int a,b; freopen("debug\\in.txt","r",stdin); //输入**重定向**,输入数据将从in.txt文件中读取 freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 while(scanf("%d %d",&a,&b)!=EOF) //C++直接用cin,cout效果一样printf("%d\n",a+b); fclose(stdin);//关闭文件 fclose(stdout);//关闭文件 return 0; }

函数名:freopen

声明:FILE *freopen( const char *path, const char *mode, FILE *stream );
所在文件: stdio.h
参数说明:
path: 文件名,用于存储输入输出的自定义文件名。
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。
stream: 一个文件,通常使用标准流文件。
返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。


#include 
int main(){//写操作char f[7]="ddddd";/*定义char数组并初始化*/FILE *fp;fp=fopen("test_b.txt", "w+"); /*创建一个二进制文件只写*/fwrite(f, sizeof(char), 7, fp);/*将6个char写入文件中*/int i=6;char *s="haha";fputs("Your score of TOEFLis\n", fp);/*向所建文件写入一串字符*/ //fputc(':\n', fp); /*向所建文件写冒号:*/fprintf(fp, "%s", s); /*向所建文件写一字符串*/ fclose(fp); /*关闭文件*///读操作//freadFILE *fpp;char dat[10];fpp=fopen("test_b.txt", "rb");/*打开一个二进制文件只读*/int p=fread(dat, sizeof(char), 10, fpp);if(p!=10){if(feof(fpp))//feof()函数检测文件位置指示器是否到达了文件结尾printf("End of file");elseprintf("Read error"); /*读数错误*/fclose(fpp); /*关闭文件*/}elseprintf("%s",dat);//fscanffpp=fopen("test_b.txt", "rb");/*打开一个二进制文件只读*/char temp[100];while (fscanf(fpp,"%s",temp)!=-1){ printf("%s\n",temp);}fclose(fpp);//fgetsfpp=fopen("test_b.txt", "rb");char tpp[100];char *tp;while((tp=fgets(tpp,3,fpp))!=NULL){ printf("%s\n",tp);}fclose(fpp);//fgetcfpp=fopen("test_b.txt", "rb");char t;while((t=fgetc(fpp))!=EOF){ printf("%c\n",t);}fclose(fpp);return 0;}

fopen函数 用于打开文件

FILE *fopen(char *filename, *type);
fopen(“c:\ccdos\clib”, “rb”); 如果成功的打开一个文件, fopen()函数返回文件指针,否则返回空指针(NULL)。由此可判断文件打开是否成功。
“r” 打开文字文件只读
“w” 创建文字文件只写
“a” 增补,如果文件不存在则创建一个
“r+” 打开一个文字文件读/写
“w+” 创建一个文字文件读/写
“a+” 打开或创建一个文件增补
“b” 二进制文件(可以和上面每一项合用)
“t” 文这文件(默认项)

fclose()函数用来关闭一个由fopen()函数打开的文件,其调用格式为:

int fclose(FILE *stream);该函数返回一个整型数。当文件关闭成功时,返回0,否则返回一个非零值。可以根据函数的返回值判断文件是否关闭成功。
文件的随机读写
fseek()函数一般用于对 二进制文件进行操作。当fseek()函数返回0时表明操作成功, 返回非0表示失败。

fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把 它们存放到buf指针所指的缓冲器中。

fwrite()函数是把buf指针所指的缓冲器中, 长度为size个字节的count个字 段写到stream指向的文件中去。

ftell()函数返回文件位置指示器的当前值,这个值是指示器从文件头开始 算起的字节数, 返回的数为长整型数, 当返回-1时, 表明出现错误。

文件的顺序写函数

fprintf() 函数的返回值为实际写入文件中的字符个数(字节数)。如果写错误,则返回一个负数;

fputs()函数返回0时表明将string指针所指的字符串写入文件中的操作成功, 返回非0时,表明写操作失败。

fputc()函数返回一个向文件所写字符的值,此时写操作成功,否则返回EOF(文件结束结束其值为-1, 在stdio.h中定义)表示写操作错误。

fprintf( ) 函数中格式化的规定与printf( ) 函数相同,所不同的只是fprintf()函数是向文件中写入。而printf()是向屏幕输出。

文件的顺序读操作函数

fscanf()函数的用法与scanf()函数相似,只是它是从文件中读到信息。 fscanf()函数的返回值为EOF(即-1), 表明读错误,否则读数据成功。读到空白字符自动返回。

fgets()函数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的字符串中,在读入之后自动向字符串未尾加一个空字符,读成功返回string指针,失败返回一个空指针。

fgetc()函数返回文件当前位置的一个字符,读错误时返回EOF。


#include 
#include
using namespace std;int main(){ //文本文件打开方式设为可读写// fstream outfile("f1.dat",ios::out|ios::in);// if (!outfile)// {
// cout<<"open error!"<
>a[i];// outfile<
<<' ';// }// //从文件读取// for (int i=0;i<10;i++)// {
// outfile>>a[i];// cout<
<<' ';// }// outfile.close(); //从键盘读入一行字符,将其中的字母存在磁盘文件// ofstream outfile("f2.dat");// if (!outfile)// {
// cout<<"open error"<
=65&&c[i]<=90||c[i]>=97&&c[i]<=122)// { // //outfile.put(c[i]);或者// outfile<
>ch/*infile.get(ch)*/) { if (ch>=97&&ch<=122) { ch=ch-32; } outfile3<

1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<”Write Stdout”<<’\n’;就表示把字符串”Write Stdout”和换行字符(‘\n’)输出到标准输出流。

2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

ifstream file2(“c:\pdos.def”);//以输入方式打开文件 ofstream file3(“c:\x.123”);//以输出方式打开文件


流输入输出

#include 
#include
using namespace std; string s; stringstream ss; int a; char c; while(getline(cin,s)){
//s = 123A23B234C...... ss.clear();//注意不能忘记清空流 ss<
>a>>c;){
//注意ss.eof()会导致最后一个数据重复操作 cout<
<
<

转载地址:http://irkab.baihongyu.com/

你可能感兴趣的文章
读史可以明智
查看>>
VC常用代码之创建进程
查看>>
如何保住一个人一生的劳动果实
查看>>
并行处理系统测试正式启动
查看>>
bcg库使用心得两则
查看>>
我和CSDN的那些事
查看>>
阅读分几种
查看>>
cannot connect to host的解决办法
查看>>
怎样在C++工程中集成C#窗口
查看>>
语言就是建立自己和世界的联系
查看>>
Cleanup failed to process the following paths错误的解决
查看>>
易康(eCognition)的野心
查看>>
从同事的一个提问想到的学习途径
查看>>
sqlite学习笔记之sqlite3_open函数的使用
查看>>
一种无线网络的搭建方案
查看>>
技术应用涉及到的四个方面的问题
查看>>
最近看了三本励志书
查看>>
一种结合hudson的算法自动化测试构想
查看>>
MSDN值得学习的地方
查看>>
坚果手机使用感受
查看>>