1樓:匿名使用者
在c++中給字串(陣列)定義長度時,首先要先確定待儲存的資料的最大可能長度,根據該長度進行陣列長度定義,其次,要記著字串是有結束符位置的,所以,在資料長度基礎上,要給字串結束符留個位置。如,
題目要求:
輸入資料不超過100個字元長度。
則變數定義為:
char data[100+1] ; //建議寫成+1這樣,表示有效資料為100個,一個是字串結束符位置
2樓:匿名使用者
char s[長度];
宣告的時候就限定了長度的
「c++」如何定義字串陣列?
3樓:愛在天空任飛翔
#include
#include
int main()
;for(int i = 0; i < 3; i ++){cout<
2.using namespace std;
千萬不要include string.h啦,string.h是c裡的字串庫,而string是c++庫,兩者沒有關係。這要弄明白連個庫有什麼不同,在網上搜搜就有。
c++裡的string是包含在std名稱空間裡的,所以要加上第二句。
4樓:娛樂小八卦啊
new 動態定義陣列。因為new 就是用來動態開闢空間的,所以當然可以用來開闢一個陣列空間。
這樣,下面的語句:
int size=50;
int *p=new int[size]; 是正確的。
首先 new int[size][column] 就是動態生成時確定的,所以它沒有錯。那麼就是 int(*p)[column],這句有問題了,這句為什麼不對呢, 那是因為,這是一個定義語句,而定義語句先經過編譯器進行編譯,當編譯器執行到此處時,發現column 不是常數,因此不能通過編譯。
而之所以編譯器認為column 不是常數,是因為編譯階段,編譯器起的作用是查語法錯誤,和預分配空間,它並不執行程式,因此,沒有執行那個賦值語句(只是對這個語句檢查錯誤,和分配空間),因此編譯階段,它將認為column 是個變數。
擴充套件資料
動態陣列的特點
陣列到底應該有多大才合適,有時可能不得而知。所以希望能夠在執行時具有改變陣列大小的能力。
動態陣列就可以在任何時候改變大小。在visual basic中,動態陣列最靈活、最方便,有助於有效管理記憶體。例如,可短時間使用一個大陣列,然後,在不使用這個陣列時,將記憶體空間釋放給系統。
如果不用動態陣列,就要宣告一個陣列,它的大小儘可能達到最大,然後再抹去那些不必要的元素。但是,如果過度使用這種方法,會導致記憶體的操作環境變慢。
每次執行 redim 語句時,當前儲存在陣列中的值都會全部丟失。visual basi 重新將陣列元素的值置為 empty(對 variant 陣列)、置為 0(對 numeric 陣列)、置為 零長度字串(對 string 陣列)或者置為 nothing(對於物件的陣列)。
在為新資料準備陣列,或者要縮減陣列大小以節省記憶體時,這樣做是非常有用的。有時希望改變陣列大小又不丟失陣列中的資料。使用具有 preserve 關鍵字的 redim 語句就可做到這點。
c++ 如何定義字串陣列?
5樓:
c語言字串陣列中的每一個元素均為指標,即有諸形如「ptr_array[i]」的指標。由於陣列元素均為指標,因此ptr_array[i]是指第i+1個元素的指標。
例:如二維指標陣列的定義為:char *ptr_array[3]=,,};
擴充套件資料
字串陣列陣列元素表示方法:
陣列元素的一般形式為:陣列名[下標] 其中的下標只能為整型常量或整型表示式。如為小數時,c編譯將自動取整。
例如,a[5],a[i+j],a[i++]都是合法的陣列元素。陣列元素通常也稱為下標變數。必須先定義陣列, 才能使用下標變數。
在c語言中只能逐個地使用下標變數, 而不能一次引用整個陣列。
6樓:匿名使用者
#include
using namespace std;
int main()
;char **p;
p=name;
cout<
cout<<*p< cout<<**p< cout<<*(++p)< 7樓:颯爽櫻風 c++里加上標頭檔案string.h 就可以直接用string str[10];這樣定義10個字串了定義時就可以賦值了。 如:string str[3]=; 你可以嘗試用cout< 8樓:金牛多弗朗明哥 方法1, 使用指標陣列: #include #include #include int main() ;int i=0; while(strcmp(test[i], " ") != 0) puts(test[i++]); system( "pause "); return 0; }這個方法比較簡單, 但是問題是這樣的話,字串是常量,無法修改。當然這個問題也可以解決, 比如使用陣列賦值, 然後將 char 陣列首地址賦值給某一個指標即可。 方法2,使用2維陣列: #include #include #include int main() ;int i=0; while(strcmp(test[i], " ") != 0) puts(test[i++]); system( "pause "); return 0; }這樣的話, 問題就是 空間的浪費! 9樓:愛在天空任飛翔 #include #include int main() ;for(int i = 0; i < 3; i ++){cout< 2.using namespace std; 千萬不要include string.h啦,string.h是c裡的字串庫,而string是c++庫,兩者沒有關係。這要弄明白連個庫有什麼不同,在網上搜搜就有。 c++裡的string是包含在std名稱空間裡的,所以要加上第二句。 10樓: 沒有字串陣列,只有字元陣列。 如以下的定義: char c[6]= char c[10]=; char c=; 11樓: c++ 怎麼還有 string ^ line這樣的語法? 標準c++,只有string。 s小寫 字串就是string,多個字串就是 vector 12樓:匿名使用者 就是二維陣列呀。如: char s[10][100] = ; 13樓:匿名使用者 #include int main() ; for (size_t i = 0; i < 2; ++i)printf("\n"); return 0;} 14樓:一千館原創短** char username[n][4]=; n是字串的個數 15樓:匿名使用者 字串陣列也能定義? 你記bai住兩點 1.c風格字元du串只要是使用雙引號 半zhi角 的,都會以 0結束dao,就是說會多出版一個字元。權2.凡是陣列沒有指名大小的定義,全部都會以賦值號右邊的初始化長度作為陣列預設大小。那麼你的問題解答如下 字串 abcd 長度為4,是因為字串長度指的是字串中有效字元的個數,不包含c... 可以用split。比如你先定義一個字串物件 string str a,b,c,d,e,f,g 然後你再定義一個陣列 string words str.split 這段 就是把str按照逗號進行分割,也就是把str分割成a和b和c和d和e和f和g儲存在你定義的字串陣列words中,此時words 0 ... sizeof string 由於它們都是和系統相關的 我的作業系統是32位的 所以在不同的系統下取值可能不同,這務必引起注意,儘量不要在這方面給自己程式的移植造成麻煩。一般情況下,在32位系統中,sizeof string 為16位元組。sizeof都和記憶體中的儲存方式有關。你這裡沒有理清楚陣列函...陣列長度和字串長度
C中如何分割字串C中如何分割字串,例如將某個帶著路徑的檔名的字串分割後只得到最後的檔名。。。
C 字串陣列如何作為函式引數