程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 如何進行C++ Builder的Visual構件庫

如何進行C++ Builder的Visual構件庫

編輯:C++入門知識

如果你用過具有string數據類型的編程語言,你可能很不習慣,別人也有同感,所以標准C++語言庫中提供了幾個字串操作函數,希望大家能夠在這邊文章中得到自己想要的信息。

關於每個函數的詳細說明和實例,見C++ Builder聯機幫助。

  1. //set up a string to hold 29 characters   
  2.  
  3. char buff[30];   
  4.  
  5. //copy a string literal to the buffer   
  6.  
  7. strcpy (buff,"This is a test.");//display it   
  8.  
  9. cout << buff << end;   
  10.  
  11. //initialize a second string buffer   
  12.  
  13. char buff2[]="A second string.";   
  14.  
  15. //copy the contents of this string to the first buffer   
  16.  
  17. strcpy (buff,buff2);   
  18.  
  19. cout << buff << end1;  

這裡介紹的字串操作是C語言中的字串處理方法。大多數C++編譯器提供了cstring類,可以簡化字串的處理(C++ Builder的Visual構件庫中有個AnsiString類,可以處理字串操作。C++ Builder聯機幫助中詳細介紹了AnsiString類)。

盡管C語言中的字串處理方法比較麻煩,但並不過時,C++編程人員經常在使用cstring類和AnsiString類等字串類的同時使用C語言中的字串處理方法。這裡不想對表中的每個函數進行舉例說明,只想舉兩個最常用的函數。strcpy()函數將一個字串復制到另一字串中,源字串可以是變量或直接字串。例如下列代碼:

  1. //set up a string to hold 29 characters   
  2.  
  3. char buff[30];   
  4.  
  5. //copy a string literal to the buffer   
  6.  
  7. strcpy (buff,"This is a test.");//display it   
  8.  
  9. cout << buff << end;   
  10.  
  11. //initialize a second string buffer   
  12.  
  13. char buff2[]="A second string.";   
  14.  
  15. //copy the contents of this string to the first buffer   
  16.  
  17. strcpy (buff,buff2);   
  18.  
  19. cout << buff << end1;  

這裡建立了放10個字符的字符數組,最初指定需要9個字節的字符串記住終止null)。後來可能忘記了數組長度,將需要16個字節的字串復制到了緩沖區,對數組重載了六個字節。這個小小錯誤就擦去了某個內存位置上的六個字節。

所以將數據復制到字符數組中時要特別小心。另一個常用的字串函數是sprintf()。這個函數可以混合文本和數字建立格式化字串。下面例子將兩個數相加,然後用sprintf()建立字串以報告結果:

  1. //set up a string to hold 29 characters   
  2.  
  3. char buff[30];   
  4.  
  5. //copy a string literal to the buffer   
  6.  
  7. strcpy (buff,"This is a test.");//display it   
  8.  
  9. cout << buff << end;   
  10.  
  11. //initialize a second string buffer   
  12.  
  13. char buff2[]="A second string.";   
  14.  
  15. //copy the contents of this string to the first buffer   
  16.  
  17. strcpy (buff,buff2);   
  18.  
  19. cout << buff << end1;  

本例中%d告訴sprintf()函數此處有個整型值,格式字串末尾插入變量x,告訴sprintf()在字串的這個位置放上變量x的值。sprintf()是個特別的函數,可以取多個變元。你必須提供目標緩沖區和格式字串,但格式字串後面的變元數是個變量。下面的sprintf()例子用了另外三個變元:

  1. //set up a string to hold 29 characters   
  2.  
  3. char buff[30];   
  4.  
  5. //copy a string literal to the buffer   
  6.  
  7. strcpy (buff,"This is a test.");//display it   
  8.  
  9. cout << buff << end;   
  10.  
  11. //initialize a second string buffer   
  12.  
  13. char buff2[]="A second string.";   
  14.  
  15. //copy the contents of this string to the first buffer   
  16.  
  17. strcpy (buff,buff2);   
  18.  
  19. cout << buff << end1;  

許多編程人員因為忘了這個簡單的事實而夜不能寐,苦苦折騰。這是個常見的錯誤,別說我沒有告訴你。C++ Builder有個兄弟叫wsprintf(),是Windows版的sprintf().Windows程序中可能同時用這兩個函數。

wsprintf()與sprintf()的作用相似,唯一的差別是不能在格式字串中放上浮點數。C++ Builder程序中兩個函數均可使用,但用sprintf()更好,因為它完全支持浮點數還可以少輸入一個字符)。關於sprintf()的進一步介紹,見C++ Builder聯機幫助。

  1. 簡介學習C++總結之談
  2. C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved