第四周周記
C++:
1.
typename *pointr_name = new typename;
用new運算符給指針分配指定類型(長度)空間,而不用先定義變量再取地址。動態(tài)聯(lián)編。
delete pointer_name;
釋放內(nèi)存,但不會刪除指針本身。要配合地使用new和delete。
2.
char數(shù)組名、char指針以及用引號括起的字符串常量都被解釋為字符串第一個字符的地址。
如果指針的類型為char,則cout顯示指針指向的字符串,要顯示地址則要強制類型轉(zhuǎn)換或取地址,(int*)pointer或者&pointer。
char *flower;
cout<<flower; // 顯示的是flower指向的字符串的內(nèi)容
3.
應(yīng)使用strcpy()或strncpy(),而不是賦值運算符來將字符串賦給數(shù)組。string類可以將一個string類對象賦給另一個string類對象,array類(同數(shù)組,靜態(tài)內(nèi)存分配)對象同,而數(shù)組不能。
4.
vector a2(4);
a2.at(1)=2.3;//將2.3賦值給a2[1]中
vector和array對象的成員函數(shù)at();可降低越界錯誤率。
5.
cin.getline(arr,20); // 對數(shù)組,這個getline()是istream類的一個類方法。
getline(cin,str); // 對string類對象,這個getline()不是類方法。
6.
用cout.setf(ios::boolalpha)函數(shù)調(diào)用設(shè)置了一個標記,命令cout顯示true和false,而不是1和0.
7.
cctype和ctype.h,字符函數(shù)庫,里面的函數(shù)可用于判斷鍵入的字符為何種類型。
8.
cin無法識別枚舉類型,因此該程序要求用戶選擇選項時輸入一個整數(shù),再用switch判斷。
如果在類型為整型時輸入一個單詞而不是數(shù)字(發(fā)生類型不匹配的情況),將發(fā)生4種情況:
- n的值保持不變;
- 不匹配的輸入將被留在輸入隊列中;
- cin對象中的一個錯誤標記被設(shè)置;
- 對cin方法的調(diào)用將返回false(如果被轉(zhuǎn)換為bool類型)
輸入錯誤和EOF都將導(dǎo)致cin返回false。重置cin的錯誤輸入標記時用cin.clear(),同時也要重置文件尾,再用cin.get()重新輸入。
對于cin方法函數(shù)調(diào)用,該函數(shù)返回cin。如果cin位于測試條件(如循環(huán)條件)中,則將被轉(zhuǎn)換為bool類型。
9.
char word[50];
cin>>word; // cin將不斷讀取,直到遇到空白字符(換行符、空格、制表符)。
cin.getline(word,50); // cin將不斷讀取,直到遇到換行符(輸入少于50個字符)。
10.
文件輸出必須包含頭文件fstream,必須聲明自己的ofstream和ifstream對象,為其命名,并將其同文件關(guān)聯(lián)起來。
打開文件open(),關(guān)閉文件close()。
ofstream outfile;
ofstream infile;
char filename[50];
char str[10];
outfile.open("file.txt");// 將outfile與file.txt關(guān)聯(lián)起來
cin>>filename;
infile.open(filename); // 將infile與名為filename的文件關(guān)聯(lián)起來
cin>>str;
outfile<<str<<endl; // 將字符串str的內(nèi)容寫到outfile指向的文件里
// 最后記得關(guān)閉文件,當然如果忘記關(guān)閉,程序正常終止時會將自動關(guān)閉它
創(chuàng)建好ofstream對象(如outfile)后,便可以像使用cout那樣使用它。
outfile.open("file.txt");
如果file.txt在程序運行前不存在,open()會新建一個名為file.txt的文件。如果存在,默認情況下會將原來內(nèi)容長度截斷到0(即清空)再執(zhí)行新的輸入。
文件輸出時,可以結(jié)合使用istream和eof()、fail()等方法來判斷輸入是否成功。
ifstream infile;
ifstream fin;
infile.open("file.txt"); // 將infile與file.txt關(guān)聯(lián)起來
char filename[50];
fin.open(filename); // 將fin與名為filename的文件關(guān)聯(lián)起來
double wt;
infile <<wt; // 從infile關(guān)聯(lián)的文件中讀取一個double型數(shù)據(jù)到wt中
char line[50];
fin.getline(line,50): // 從fin關(guān)聯(lián)的文件中讀取一行字符串到line數(shù)組中
// 如果試圖打開一個不存在的文件用于輸入,這種錯誤將導(dǎo)致后面使用ifstream對象進行輸入時失敗。
// 檢查是否被成功打開用is_open(),如果打開成功會返回true
infile.open("file.txt");
if(!infile.is_open())
{
cout<<"Could not open the file"<<endl;
exit(EXIT_FAILURE); // exit()原型在頭文件cstdlib中
}
// 也可以用good()來代替,但是沒有is_open()那么廣泛。
如果在使用git時出現(xiàn):LF will be replaced by CRLF
$ rm -rf .git //刪除 .git
git config --global core.autocrlf falsee //禁用自動轉(zhuǎn)換
//再重新執(zhí)行
$ git init