探秘靈活性的C/C++語言命令說明
C/C++的靈活性是建立在其復(fù)雜的語法之上的,因此對于初學(xué)者來說,很有可能因此望而卻步,如果堅(jiān)持下去,就會發(fā)現(xiàn),再去看C#、Java語法時會感到很輕松,希望本文能教會你更多東西。
在VIM編輯器的環(huán)境下用“:make”(make工具的使用已經(jīng)在我昨天的文章中 提到的云風(fēng)的幾篇文章中詳細(xì)介紹到)就可以編譯程序,當(dāng)然其前提是在當(dāng)前目錄下有Makefile文件。運(yùn)行完“:make”之后。
如果程序中有錯誤,就 會顯示出來。這時候,光標(biāo)會自動指向第一個出現(xiàn)錯誤的地方,而且你還可以看到錯誤的提示。然后,你就可以改正錯誤,而不用手工找到出錯的那一行。記住下面 幾個有用的命令:
- #include
- #include
- #include
- int main(){
- using namespace std;
- ostringstream strbuf;
- /*寫入字符串*/
- int lucky = 7;
- float pi = 3.14;
- double e = 2.71;
- strbuf << "luckynumber" << lucky << endl
- <<"pi" << pi << endl
- <<"e" << e << endl
- string strval = strbuf.str();/*把stringstream換成字符串*/
- cout << strval;
- ofstream outf;
- outf.open("mydata");/*創(chuàng)建一個磁盤文件來讀寫*/
- outf << strval;
- outf.close;
- ifstream inf;
- inf.open("mydata");
- string newstr;
- int lucky2;
- inf >> newstr >>lucky2;
- if(lucky != lucky2){
- ceer << "Error wrong lucky number" << endl;
- }
- float pi2;
- inf >> newstr >> e2;
- if (pi2 != pi){
- cerr << "Error wrong pi." << endl;
- }
- inf.open("mydata");
- while (not inf.eof()){
- getline(inf ,newstr);
- cout << newstr << endl;
- }
- inf.close();
- return 0;
- }
流是用來進(jìn)行讀寫的對象,為此標(biāo)準(zhǔn)庫定義了,而QT定義了來提供對應(yīng)的功能。流通常用來對文件,網(wǎng)絡(luò)連接以及字符串進(jìn)行讀寫,一個非常有用的特征就是她可以方便的從復(fù)合類型數(shù)據(jù)生成字符串。iostream定義了3個全局流:
cin---鍵盤標(biāo)準(zhǔn)輸入流;cout---控制臺標(biāo)準(zhǔn)輸出流(控制臺屏幕);cerr---標(biāo)準(zhǔn)錯誤流...也定義了flush和endl等控制符,一個控制符可以添加到:輸出流:以此來改變數(shù)據(jù)輸出的格式;輸入流:以此改變輸入數(shù)據(jù)的解析方法。給出使用ostrstream流的理由。#t#
iostream為內(nèi)置類型類型對象提供了輸入輸出支持,同時也支持文件的輸入輸出,類的設(shè)計(jì)者可以通過對C/C++庫的擴(kuò)展,來支持自定義類型的輸入輸出操作getline 和 >>操作符的區(qū)別是什么?函數(shù)getline(istream &in,string &s);用于從輸入流in中讀取字符串到s中,以換行符'\n'分開。指針和引用之間的區(qū)別是什么?#t#
從現(xiàn)象上看:指針在運(yùn)行時可以改變其所指向的值,而引用一旦和某個對象綁定后就不再改變 ,從內(nèi)存分配上看:程序?yàn)橹羔樧兞糠峙鋬?nèi)存區(qū)域,而引用不分配內(nèi)存區(qū)域,一個引用必須總是指向某些對象。
在C/C++里,引用應(yīng)被初始化。不存在指向空值的引用這個事實(shí)意味著使用引用的代碼效率比使用指針的要高。為什么函數(shù)main(int argc,char argv[])有時候帶參數(shù)?他們有何作用?