JAVA 和 C/C++ 中 string 的區別和注意點
談一下C++的字串:C++提供兩種字串的表示:C風格的字串和標準C++引入的string型別。一般建議用string型別,但是實際情況中還是要使用老式C風格的字串。
1.C風格的字串:C風格字串起源於C,並在C++中得到擴充套件。字串儲存在一個字元陣列中,例如:
const char *str = “zhangdan”;(不要忘掉最後的\0)
這裡用常量字元陣列來表示字串。操作字串的時候只要操作指標就可以了。如 :
const char * str = "zhangdan"; const char *p = str; 然後對p進行操作就可以了。
2.標準C++的string型別:如果用的話首先要引入標頭檔案:#include<string>
在C++中提供的標準字串型別提供了以下操作:
(1).支援用字元序列或者第二個字串去初始化一個字串物件。C風格的字串不支援用另外一個字串初始化另外一個字串。
(2).支援字串之間的copy,C風格字串通過strcpy()函式來實現。
(3).支援讀寫訪問單個字元。對於C風格的字串,只有解除引用或者通過下標操作才能訪問單個字元。
(4).支援兩個字串相等比較,對於C風格的字串,比較是通過strcmp()函式來實現的。
(5).支援兩個字串連線,對於C風格的字串用strcpy() 函式copy到一個新的例項中,然後用strcat()把兩個字串接起來。如:
string str1 = "111111", str2 = "222222";
string str3 = str1 + str2;
(6).支援對字串長度的查詢:string s ("XXXXXXX"); str.size() 為字串的長度。
相互轉換:const char * str = str2.c_str(); //不可把字串型別直接賦給字元陣列,但是可以吧一個字元陣列賦給一個字串型別:如:const char *str = "zhangdan"; string str2 = str;
C++ string類的輸入
(1)方法一:和C字串輸入的方法一相同。
(2)方法二:使用getline函式。
例如:string a;
getline(cin,a);
字串到數字的轉換
atoi函式獲取一個C字串引數,返回對應的int值。如果引數不與一個int值對應,atoi就會返回0。atoi函式在檔案為cstdlib的庫中。如果數字太大,不能轉換成int型別的值,可以使用atol將字串轉換為long型別的值。
例如:
atoi("1234"); //返回整數1234
atoi("#123"); //返回0
C++中字串的常用方法就不一一介紹,介紹幾個常用的:begin(),end(),append(),等等。
2:JAVA中的字串:在JAVA中,String不屬於8中基本型別,所以String是物件,預設值是null
例如:String str = new String(); 和String str = new String("");是一個意思,就是構造一個空字串,(理解null和""的區別)。
看下面這段程式碼:
相關推薦
Java的IO操作中關閉流的注意點
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
java中String new和直接賦值的區別
字符串相同 main 基礎 還需 賦值 請問 常量 int 表達 Java中String new和直接賦值的區別 對於字符串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的
JAVA中string.replace()和string.replaceAll()的區別及用法
mod btn dsm ont match cep 產生 生成 語法 乍一看,字面上理解好像replace只替換第一個出現的字符(受javascript的影響),replaceall替換所有的字符,其實大不然,只是替換的用途不一樣。 public Strin
c語言中宏定義和常量定義的區別
沒有 int 符號表 cnblogs 格式 nbsp 參數 不同之處 區別 他們有共同的好處就是“一改全改,避免輸入錯誤”哪兩者有不同之處嗎?有的。 主要區別就在於,宏定義是在編譯之前進行的,而const是在編譯階段處理的 宏定義不占用內存單元而const定義的常量
c++ 中 string 和 const char * 中的相同和不同,遇到的坑。
#include<iostream> #include<string> using namespace std; string ToString(int i) { string str = std::to_string(i); return str; } int mai
c語言中形參和實參的區別?
形式引數和實際引數 函式的引數分為形參和實參兩種。在本小節中,進一步介紹形參、實參的特點和兩者的關係。形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫
去除C++中string前面和後面的空白符
#include <algorithm> #include <functional> #include <cctype> #include <locale> // trim from start static inline std::string <r
Java中String ,StringBuffer和StringBuilder的區別
Java中的與字串操作相關的三個類String,StringBuffer和StringBuilder非常重要,特別做下總結。 String 字串常量 String 是不可變的物件, 因此在每次對 String 型別進行改變的時候其實都等同於生成了
C語言中單引號和雙引號的區別
拿0來舉例: 單引號是單個字元‘0’; 雙引號是字串“0”,包含0和結束符 , 即‘0’‘\0’ 組成的有一個字元0和結束符組成的字串。 雙引號裡面的是字串,代表的卻是一個指向無名陣列起始字元的指標,該陣列被雙引號之間的字元以及一個額外的二進位制值為零的字元‘\0’初始化
C語言中的++a和a++的區別
自增自減1、++自增運算子:如a++,++a都等價於a = a + 1;2、--自減運算子:如a--,--a都等價於 a = a -1; 雖然++a和a++等價的結果一樣,但是運算過程確大不相同,以下舉例說明: #include <stdio.h> int
const在C和C++編譯中的區別(實現機制)
我們都知道在程式中用const,如果是變數,這表示該變數的值不能被修改,,,但是看下面一段C程式碼: 注意在用C編譯, #include <stdio.h> #include <stdlib.h> int main() { const i
C++中建構函式,拷貝建構函式和賦值函式的區別和實現
C++中一般建立物件,拷貝或賦值的方式有建構函式,拷貝建構函式,賦值函式這三種方法。下面就詳細比較下三者之間的區別以及它們的具體實現 1.建構函式 建構函式是一種特殊的類成員函式,是當建立一個類的物件時,它被呼叫來對類的資料成員進行初始化和分配記憶體。(建構函式的命名必須
C語言中的一個*和[]優先級問題
pre 執行 return ges spa 技術 分享 malloc bsp 最近寫著玩了這麽一段代碼 1 int Init(int **T, int v1, int v2, int v3) 2 { 3 4 if (!(*T=(int*) malloc(3*
C# List<string>和ArrayList用指定的分隔符分隔成字符串
light arp 字符串 元素 logs arraylist pre brush type 原文地址:https://www.cnblogs.com/ahwwmb/p/4166707.html 串聯字符串數組的所有元素,其中在每個元素之間使用指定的分隔符
Java多執行緒中Synchronized簡介和Static Synchronized的區別
在進行Java開發時,多執行緒的開發是經常會使用的。首先會問一個小問題啊,在Java中有幾種方法可以建立一個執行緒? 我給的答案是3種。(如果還有其他的請留言告訴我哈。) 1、建立直接繼承自Thread類建立執行緒子類。 步驟如下:a 定義一個子類,同時
對c語言中指標陣列和陣列指標的認識
1.陣列:一批具有同名的同屬性的資料就組成了一個數組。(“[ ]”也是陣列型別的一部分) 由此可知:(1)陣列是一組有序資料的集合;(2)陣列中的每一個元素都屬於同一個資料型別。 定義一維陣列的一般形式:型別符 陣列名【常量表達式】(陣列也
C++模板中的省略號和可變引數模板
#include <iostream> using namespace std; void print() { cout << "hello world" << endl; } template<class T> voi
C語言中巨集定義和函式的取捨
原文連結:http://www.embedu.org/Column/Column177.htm 要寫好C語言,漂亮的巨集定義是非常重要的。巨集定義可以幫助我們防止出錯,提高程式碼的可移植性和可讀性等。 在軟體開發過程中,經常有一些常用或者通用的功能或者程式碼段,這些功能既可以寫成函式,也可以
c語言中的 strcpy和strncpy字串函式使用介紹
1.strcpy函式 函式原型:char *strcpy(char *dst,char const *src) 必須保證dst字元的空間足以儲存src字元,否則多餘的字元仍然被複制,覆蓋原先儲存在陣列後面的記憶體空間的數值,strcpy無法判斷這個問題因為他無法判斷字元陣列的長度。
《隨筆四》——C#中的 “屬性和索引器中的 get 和 set 訪問器的訪問修飾符”
屬性和索引器中的 get 和 set 訪問器的訪問修飾符 ● 索引器和屬性自帶 get 和 set 訪問器, 在預設的情況下: 如果一個屬性有public 訪問級別, 那麼它的那個兩個訪問器