C ++ Primer Plusノート(第5章および第6章)

1. strcmp():2つの文字列を比較します。同じものは0を返します。2番目の文字の後のアルファベット順の最初の文字列は負の値を返します。

2.エイリアスを入力します。

#define BYTE char //プリプロセッサを使用し、すべてのBYTEをcharに置き換えます。BYTEはcharのエイリアスです

typedef char byte //キーワードtypedefを使用します。byteはcharのエイリアスです。typedefは新しいタイプを作成しません

3. C ++ 11の範囲ベースのforループは、配列(またはベクトル、配列)の各要素に対して同じ操作を実行します。

2倍の価格[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)を検出します。cin.eof()またはcin.fail()は、EOFが検出された場合は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.2次元文字列配列メソッドを定義します。

(1)文字ポインタ配列:char * citys [3] = {"Beijing"、 "TianJin"、 "ShangHai"};

(2)char配列char都市の配列[3] [10] = {"Beijing"、 "TianJin"、 "ShangHai"};

(3)文字列オブジェクト配列文字列citys [3] = {"Beijing"、 "TianJin"、 "ShangHai"};

文字列を変更できる場合、文字列クラスはサイズを自動的に調整して、より便利にすることができます。

9. switchステートメントのwhileステートメントで、int値を列挙ラベルと比較すると、列挙はintにプロモートされます。

switchステートメントの各ケースのラベルはintまたはcharである必要があり、定数である必要があります

10.続行:残りのループからジャンプして、新しいループを実行します

     break:ループステートメントを実行せずに、ループの残りの部分からジャンプします

スイッチは通常、ブレークと組み合わせて使用​​されます

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

スイッチ(選択){ケース0:...ブレーク; ケース1:...ブレーク; ケース2:...ブレーク; }

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 << "番号を入力してください:";

}}

12.テキストファイルファイル出力の書き込み:ヘッダーファイル#include <fstream>を含める必要があり、1つ以上の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>を含める必要があり、1つ以上のifstreamオブジェクトを宣言する必要があり、open()メソッドを使用してifstreamオブジェクトをファイルに関連付けます。ファイルを使用した後、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; //ループの外側で1回読み取る必要がある
    while(infile.good())//
    {.......
          infile >> value; //次の値を読み取る
    } 

上記のこの部分は、

while(infile >> value)//それが成功したかどうかを読み取ってテストします

{......} 

 

 

 

おすすめ

転載: blog.csdn.net/lvliang2017232003/article/details/85645040