程式語言-C/C++中INI配置文件地介紹

2021-02-15 CV算法

--資料由實驗室焦玉鵬師弟搜集整理-

1.首先介紹一下C/C++中的數值變量:

    類型:short 、int、long、float、double、char

    

   局部變量:

   在某函數內部定義並使用,其作用範圍只是這個函數的大括號內部,跳出定義它的大括號就不會再起作用了(其內存會被釋放)即動態分配內存空間,而且不同的大括號中定義的變量名可以相同(它們之間互相不會受到影響),即使在函數內部存在大括號的嵌套,以上性質依然適用。         

   如果我們有這樣的需求,就是希望函數中局部變量的的值在調用後保存運行結果,下一次使用此變量時接著上一次運行的而結果繼續運行,那麼就要定義一個局部靜態變量了(static  int  x;),它只能在定義它的源程序文件中起作用,當出現跨文件調用時static  int  x;這樣的定義就不行了。這裡需要注意一點,一般的變量如果在定義時不賦初值它裡面的數值是隨機分配的,而局部靜態變量在定義時如果不賦初值編譯時自動賦零值,而函數內部的局部變量在定義時必須賦初值否則程序會報錯,全局變量就不會這樣。

   其實在靜態存儲區分配的存儲單元在程序的整個運行期間都不會被釋放,在多次調用函數時其值都會被保留,但是它只適用於定義它的函數其他函數不能引用它,當整個程序運行完畢後其值才會被釋放。

全局變量:

    在函數外部定義的變量稱為全局變量,下面來看它的作用範圍,該變量的作用範圍是從定義它的地方開始起作用直到整個源程序文件結束,也就是說全局變量即使沒有在大括號中定義(在大括號前定義,大括號後不行)也依然可以在大括號中起作用。

定義了全局變量後其在整個程序執行期間佔用內存空間,只有在整個程序執行完畢後這個全局變量才會被系統釋放掉。

    但是如果我們有這樣的需求,在一個工程項目文件中存在多個源程序文件,某變量需要在一個原程序文件中運算完畢後接著還要趕著去參加另一個源程序文件的運算,這就出現了全局變量的跨文件引用問題,這個問題的解決方法只需要一個外部變量聲明就可以了(extern int x;),但在整個程序結束後它的值依然會被釋放掉。

    介紹完C/C++全部的變量引用規則後發現不管某個變量的作用域有多麼廣泛它們全都會在該程序運行結束後被釋放掉,那麼如果我們有這樣的需求呢,就是在程序運行結束後再次運行該程序時,某個整形變量依然是上一次運行結束後的結果!!!

    這就用到INI配置文件了,該文件的使用非常簡單並且非常實用,即保存程序運行過程中產生的變量(整形或字符串等),當程序再次運行時調用上一次保存在INI配置文件中的變量繼續運行。

2.接下來是INI配置文件的使用:

    

    首先是獲取.INI配置文件中的預存信息其函數為:

DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefaut, LPSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName); 

    這個函數讀的是long string 類型,要想讀 INT類型需要用到 :

UINT GetPrivateProfileInt(LPCTSTRlpAppName,LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName);

接下來介紹函數中各參數的含義:

LPCTSTR lpAppName -- INI文件中的一個欄位名LPCTSTR lpKeyName --- lpAppName 下的一個鍵名,也就是裡面具體的變量名LPCTSTR lpDefaut 如果沒有其前兩個參數值,則將此值賦給變量LPSTR lpReturnedString ---接收INI文件中的值的CString對象,即接收緩衝區DWORD nSize -接收緩衝區的大小LPCTSTR lpFileName ---完整的INI文件路徑名

    

    讀到INI配置文件中的變量後接下來就要對其進行使用了,把使用完之後的變量值還需要對其進行寫入配置文件的操作,以便下一次調用,這就用到了

BOOL WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName);

    其重複的變量值同上,其中LPCTSTR lpString ----是鍵值,也就是變量的值, 必須為LPCTSTR或CString類型

    知道以上函數就可以實現INT類型變量的讀寫了,具體實例如下:

void Text (){CString str;int yong;
yong= ::GetPrivateProfileInt(_T("Mn"),_T("Li"),yong,"C:\\Users\\Administrator\\Desktop\\Pi.ini");   str.ReleaseBuffer();yong++;str.Format("%d", yong);WritePrivateProfileString(_T("Mn"),_T("Li"),str,"C:\\Users\\Administrator\\Desktop\\Pi.ini");}



相關焦點

  • python+C、C++混合編程的應用
    在有些領域,比如通信,性能很關鍵,但並不意味這個領域的coder只能苦苦掙扎於c/c++的陷阱中,比如可以使用多種語言混合編程。我看到的一個很好的Python與c/c++混合編程的應用是NS3(Network Simulator3)一款網絡模擬軟體,它的內部計算引擎需要用高性能,但在用戶建模部分需要靈活易用。
  • C語言編程工具選擇
    一、編程工具計算機處理的數據、接受的指令是二進位數據,用C語言編寫的程序需要轉變成計算機能識別的二進位,才能讓計算機工作,這個轉換過程就是使用編譯器對源程序進行編譯,雖然可以使用命令行的方式編譯源程序,但使用編程工具不僅可以編譯源程序,還可以編寫、調試等,可以簡化編程工作。
  • 九大程式語言優缺點第四期:c++
    上一期給大家介紹了C語言,理所應當的本期給大家了解下C語言的超集,c++那麼接下來給大家介紹主流程式語言:C++、JavaScript、C#、Ruby、PHP以及Objective-C,對於這幾種語言,大家都能看到由其打造的頂尖應用,我們一起來了解一下吧。
  • Python讀取ini配置文件
    在日常開發過程中,會有很多的時候都涉及到配置文件的問題。近期編寫的一個小應用也涉及到了此問題,今天特意拿出來寫一下。目前是使用python來實現的,將代碼打包成了exe文件,方便客戶進行測試。下面說一下配置文件,本次直說ini格式的配置文件。創建ini文件在目錄中創建.ini文件,我們以config.ini文件名為例。進行創建。在創建好的文件內編寫配置信息。
  • PHP配置函數ini_get()的具體用法介紹
    PHP配置函數ini_get()的具體用法介紹 PHP配置函數ini_get()的主要功能就是獲取配置文件中的選項值。如果我們能合理運用,還可以發揮出它的許多功能供我們使用。
  • 現代程式語言起點,C語言之環境搭建
    C語言可以在Unix、Linux、Mac(內核為Unix)、Windows系統下兼容。2、C語言的編輯器:Notepad、EMACS、 vim/vi、Xcode3、C 編譯器寫在源文件中的原始碼是人類可讀的源。
  • C/C++編程筆記:VScode搭建C和C++環境的圖文教程
    MinGW簡單介紹和下載配置需要注意的一點是,VScode只是一個文本編輯器,本質上和Windows的記事本是一個東西,它不是一個編譯器,它只是一個編輯器,編輯器是無法編譯運行程序的,這是編譯器的工作。
  • Python configparsr標準庫簡介:輕鬆處理INI文件
    如果你要使用Python處理類似ini這種格式的文件,那麼肯定離不開configparser標準庫,它使用起來很簡單而且非常方便。下面就讓我們來看看吧。簡單讀寫讀寫ini文件非常簡單,來看看下面的例子就明白了。首先要創建ConfigParser的實例,使用它則非常簡單,基本上就和處理字典完全一樣。
  • C 語言會比 C++ 快?
    細節真的不那麼重要,但它有助於理解結構和大小:整個算法在一個獨立的 .cpp 文件中實現,該文件幾乎有一千行代碼(撰寫本文時為 1004 行),包括注釋,空行,帶括號的行等。該算法基本上只使用堆分配的數組作為數據結構,並使用原始指針。
  • C語言?c+?到底先學哪個才能更好的理解編程,這些你造嗎
    首先很多人覺得C語言是c++的子集,覺得直接學習c++就可以了,還要花費一個學期的時間先學C語言有必要嗎? 本身C語言和c++的編程方法不同,一個面向過程,一個面向對象。而要做出大型的、複雜的、精彩的程序,面向對象的語言就更適合。所以要學習c++這樣的語言。但是,1.c語言是好多學校的基礎課;2.c語言很容易描述算法;3.軟體開發過程中也有很多面向過程的開發,以及模塊化程序設計思想。要學習這些,比起學c++的複雜、困難程度,學c語言就可以達到上述目的。
  • C/C++優勢究竟在哪裡?是什麼讓他們經久不衰?看看這個你就懂了
    c語言誕生於1972年,是一個通用型命令式計算機程式語言,其支持結構化編程,詞彙變量範圍與遞歸,同時也是一種能夠預防各類未預期操作的靜態類型系統,最初的目標在於構建編寫系統軟體。相較於C語言,c++誕生於1983年,緊隨c語言的步伐,c++是C語言的超集,大家所知道的C語言是面向過程的,java是面向對象的,那麼C語言為了面向對象,所以誕生出現在大家所熟知的c++,被廣泛視為大規模應用構建軟體。
  • C語言,C++,C ,Java之間的關係
    C語言,C++,C#,Java,這幾種語言,應該說是當前最流行,也是最基礎的計算機語言。是不是有些人看著會頭大,大腦會不叫混亂,一個計算機怎麼會有那麼的的語言呢?看著就頭大。之後,為了方便理解,又出現了編匯語言---有英語單詞組成,這裡可以理解了,但是,編匯語言還是要轉換為計算機語言,這裡有專門的軟體將編匯語言轉為計算機語言。這個軟體我想大家應該猜到了,就是編譯器。裡面單詞與及一些語法和01010的代碼相對應,可以把編匯語言很好的翻譯成機器語言。
  • C語言C++編程學習常用的編譯器
    它是一個開放源碼的全功能的跨平臺C/C++集成開發環境,具有靈活而強大的配置功能,除支持自身的工程文件、C/C++文件外,還支持AngelScript、批處理、CSS文件、D語言文件、Diff/Patch文件、Fortan77
  • C++伺服器開發完整學習路線(含免費學習資料下載地址)
    我寫這篇文章的目的就是為了幫助更多想入行或者想轉行做c++伺服器的新人避免走更多的彎路,最終能夠順利的掌握相關知識找到心儀的工作。一. 基礎階段  c/c++程式語言linux基礎數據結構與算法設計模式腳本語言(可選)二.
  • Linux、C/C++學習路線圖、C語言學習路線
    Linux NetworkingLinux網絡對於系統管理員來說是最為重要的一塊之一,同樣出自於Paul Cobbaut之手,較為系統的介紹了Linux網絡基礎知識,網絡配置,同時著重介紹了常用的網絡服務等。
  • C/C++編程筆記:C/C++中的strrchr()函數,到底該怎麼用?
    在C ++中,strrchr()是用於字符串處理的預定義函數。cstring是字符串函數所需的頭文件。
  • C+相比其他語言到底難在哪裡?
    看過程式語言排行榜的都知道,c/c++自02年以來,不管時代如何發展,其排名一直在前五以內,足見其在程式語言界的地位。編程界流行這麼一句話:c幾乎什麼都能做,c++幾乎什麼都能做好,足見其功能的強大。
  • C語言?C++?英文沒學好不能學編程?中文編程易語言你應該接觸下
    易語言是一門以中文作為程序代碼程式語言,其以「易」著稱,創始人為吳濤。易語言早期版本的名字為E語言。其最早的版本的發布可追溯至2000年9月11日。創造易語言的初衷是進行用中文來編寫程序的實踐,方便中國人以中國人的思維編寫程序,並不用再去學習西方思維。
  • Linux下C語言編譯的問題
    ,大家其實經常會遇到,在此,我以詳細地示例給出常見錯誤的各種原因以及解決方法,希望對初學者有所幫助。連結的庫文件中又使用了另一個庫文件  這種問題比較隱蔽,也是我最近遇到的與網上大家討論的不同的問題,舉例說明如下,首先,還是看看測試代碼。  從上圖可以看出,main.c調用了test.c的函數,test.c中又調用了fun.c的函數。
  • 20種熱門程式語言輸出Hello World,你會幾種?
    此文章主要為大家介紹了20種熱門程式語言輸出Hello World,你會幾種?,具有一定的參考價值,學習覺得挺不錯的,分享給大家。如何使用20種最熱門的程式語言來寫代碼呢? 首先,我們要知道目前最熱門的程式語言們到底是哪幾種? 哪種程式語言最熱門?