ITPub博客

首页 > 应用开发 > C/C++ > 我的随行笔记4 C++ Primer Plus

我的随行笔记4 C++ Primer Plus

C/C++ 作者:qwer1030274531 时间:2020-08-27 14:30:29 0 删除 编辑

1、strcmp( ):比较两个字符串,相同返回0;第一个字符串按字母顺序排在第二个字母之后将返回负值;


2.类型别名:


#define BYTE char  //使用预处理器,用char替代所有的BYTE,BYTE是char的别名


typedef char byte  //使用关键字typedef ,byte是char的别名。typedef不会创建新类型


3. C++11中基于范围的for循环,对数组(或vector,array)的每个元素执行相同的操作:


double prices[5]= {4.99,5.6,2.13,2.69,7.34};


for (double x : prices)   {cout<<x<<std::end;}


for (double &y : prices)   { y=y*0.8;  } // 要修改数组元素时,循环变量要取地址,改为&y


4、cin() 忽略空格和换行符,cin.get()中包含空格、制表符、换行符。


  cin.get(name,size).get();


5、检测文件尾(EOF) :检测到EOF,cin.eof() 或cin.fail() 将返回bool值true,否则返回bool值 false; 


6.字符输入做法:


char ch; cin.get(ch);  while (cin.fail()==false) { ....  cin.get(ch); }  //或者while (!cin.fail()) 或while (cin) 


char ch;  while (cin.get(ch))  { ... }


int ch; ch=cin.get();  while ( ch!=EOF )  { ...  ch=cin.get(); } 


int ch;   while((ch = cin.get() ) != EOF) {     } 




更常用,拼接字符串:cin.get(ch1).get(ch2);


7.逻辑运算符||  逻辑运算符&&


!的优先级大于逻辑运算符和关系运算符(> < =), &&优先级大于|| ,关系运算符优先级大于 &&,||


8.定义二维字符串数组方式:


(1)char指针数组: char * cities[3]={"Beijing", "TianJin", "ShangHai"};


(2)char数组的数组 char  cities[3][10]={"Beijing", "TianJin", "ShangHai"};


(3)string对象数组 string  cities[3]={"Beijing", "TianJin", "ShangHai"};


希望字符串可以修改的情况下,string类可以自动调节大小更方便。


9.switch语句,while语句中,将int值与枚举量标签进行比较时,枚举量将提升为int。


switch语句中每一个case的标签必须是int或char,还必须是常量


10.continue :跳出循环剩余部分,执行新的一轮循环


     break :跳出循环剩余部分,不在执行循环语句


switch一般与break组合使用


int chice[3]={0,1,2};


switch (choice){case 0: ... break;  case 1: ... break; case 2: ... break;  }


11.int n[6];  for(i=0;i<6;i++){


 cout<<"round "<<i+1<<" : ";


while(!(cin>>n[i])){   //当输入不是字符时,执行下面循环


cin.clear(); // 如果输入的是字符,不是数字时,应利用cin.clear() 重置cin以接受新的输入。


while (cin.get() != '\n')   continue;  //while中用cin.get() 读取行尾之前的输入,从而删除这行错误输入


cout<<"Pleae enter a number:  ";


}  }


12.写入文本文件文件输出:必须包含头文件 #include<fstream>,需要声明一个或多个ofstream对象,将ofstream对象与文件关联用open()方法。使用完文件用close()关闭。可以使用ofstream对象和运算符<<来输出各种类型的数据。(和cout类似)


   


#include "stdafx.h"

#include<iostream>

#include<fstream>

 

int _tmain()

using namespace std;

char automobile[50];

int year;

double a_price,d_price;

 

ofstream outfile; //创建一个输出的ofstream对象,可以像使用cout一样使用outfile

outfile.open("carinfo.txt"); //关联的文件,创建一个名为carinfo.txt的文件

cout << "Enter the make and model of automobile: ";

cin.getline(automobile, 50);

cout << "Enter the model year: ";

cin >> year;

cout << "Enter the original asking price: ";

cin >> a_price;

d_price = 0.913*a_price;

cout << fixed;

cout.precision(2);  //设置显示精确度为2位并返回上一次的设置。

cout.setf(ios_base::showpoint); //显示浮点数小数点后的0;

cout << "Make and Model: " << automobile << endl;

cout << "Year: " << year << endl;

cout << "Was asking $" << a_price << endl;

cout << "Now asking $" << d_price << endl;

 

outfile << fixed;  //可以像使用cout一样使用outfile

outfile.precision(4);  设置输出精确度为4位并返回上一次的设置。

outfile.setf(ios_base::showpoint);  

outfile << "Make and Model: " << automobile << endl;

outfile << "Year: " << year << endl;

outfile << "Was asking $" << a_price << endl;

outfile << "Now asking $" << d_price << endl;

 

outfile.close();  //关闭文件

return 0;

}

13.读取文本文件:必须包含头文件 #include<fstream>,需要声明一个或多个ifstream对象,将ifstream对象与文件关联用open()方法。使用完文件用close()关闭。可以使用ifstream对象和运算符>>来读取各种类型的数据。


可以使用ifstream对象和get()方法来读取一个字符。使用ifstream对象和getline()方法来读取一行字符。


使用ifstream对象和eof() 、fail()等方法来判断输入是否成功


ifstream对象本身作为测试条件时,如果最后一个读取操作成功,它将会被转化为bool值true.(和cin类似)


检查文件是否被成功打开用方法is_open();


#include "stdafx.h"

#include<iostream>

#include<fstream>

#include<cstdlib> //支持exit()

const int SIZE = 60;

 

int _tmain()

using namespace std;

char filename[SIZE];

ifstream infile;

cout << "Enter name of data file: ";

cin.getline(filename, SIZE);  //输入要读取的文件名

infile.open(filename);

if (!infile.is_open()) //检查文件是否被成功打开

{

cout << "Could not open the file" << endl;

cout << "Program terminating.\n";

exit(EXIT_FAILURE);

}

double value;

double sum = 0.0;

int count = 0;

infile >> value; //在循环外读取第一个值

while (infile.good()) //读取输入操作成功且未到达EOF

{

++count;

sum += value;

infile >> value;  //读取下一个值

}

if (infile.eof()) //判读是否达到EOF

cout << "End of file read.\n";

else if (infile.fail()) //可以检测EOF或类型不匹配

cout << "Input terminated by data mismatch.\n";

else

cout << "Input terminated by unkonwn reason.\n";

if (count == 0)

cout << "No data processed.\n";

else

{

cout << "Item read: " << count << endl;

cout << "Sum: " << sum << endl;

cout << "Average: " << sum / count << endl;

}

infile.close();

return 0;

}

infile >> value; //在循环外需进行一次读取

    while (infile.good()) //

    {  .......

          infile >> value;  //读取下一个值

    } 


以上这一部分等效于


while (infile>>value)  //读取并测试是否成功


{ ...... } 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30239065/viewspace-2715136/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-05-08

  • 博文量
    178
  • 访问量
    81304