商量數組與字符串輸出的成績(C++版)。本站提示廣大學習愛好者:(商量數組與字符串輸出的成績(C++版))文章只能為提供參考,不一定能成為您想要的結果。以下是商量數組與字符串輸出的成績(C++版)正文
關於字符串成績,本來懂得的不敷深入,如今評論辯論一些關於字符串輸出的成績
1.strlen() 前往的是數組中的字符串的長度,而不是數組自己的長度。
2.strlen()只盤算可見的字符,而不把空字符盤算在內。
那末更成心思的在前面:
char name[16] = "abcdefg"; //輸入成果是若干? cout << name << endl; name[3] = '\0'; //輸入成果又是若干? cout << name << endl;
年夜家猜猜 ?
# include <iostream> # include <cstring> # define SIZE 15 using namespace std; int main(void) { char name_cin[SIZE]; char name[SIZE] = "C++owboy"; //initialized array cout << "Hello I'm " << name; cout << "! What is your name ? "; cin >> name_cin; cout << "Well " << name_cin << ", your name has "; cout << strlen(name_cin) << " letters and is stored " << endl; cout << "in an array of " << sizeof(name_cin) << "bytes." << endl; cout << "your initial is " << name_cin[0] << "." << endl; name[3] = '\0'; cout << "Here are the first 3 characters of my name : "; cout << name << endl; return 0; }
年夜家猜猜成果呢?
name字符串被截斷了...
釋義:
數組可以用索引來拜訪數組的各個字符,例如name[0]找到數組的第一個字符,name[3] = '\0'; 設置為空字符,使得這個字符串在第三個字符前面即停止,即便數組中還有其他字符。
不外cin有個缺點,就是以空白符為停止標記,假如碰到空格和回車就把這個字符串輸出完了,如許就須要用能輸出一行字符串的辦法來處理,然則先看看這個成績:
# include <iostream> using namespace std; int main(void) { const int ArSize = 20; char name[ArSize]; char dessert[ArSize]; cout << "Enter your name : " << endl; cin >> name; //輸出名字 cout << "Enter your favorite dessert: " << endl; cin >> dessert; //輸出甜點的名字 cout << "I have some delicious " << dessert; cout << " for you, " << name << "." << endl; return 0; }
釋義:
cin應用空白(空格、制表符、換行符)來定字符串的界限,cin在獲得字符數組輸出時只讀取第一個單詞,讀取單詞後,cin將該字符串放到數組中,並主動在開頭添加空字符'\0'
cin把Meng作為第一個字符串,並放到數組中,把Liang放到輸出隊列中第二次輸出時,發明輸出隊列Liang,由於cin讀取Liang,並將它放到dessert數組中
這時候假如能輸出一行數據,這個成績不就處理了嗎?
getline()、get()可以完成...
# include <iostream> using namespace std; int main(void) { const int ArSize = 20; char name[ArSize]; char dessert[ArSize]; cout << "Enter you name : " << endl; cin.getline(name,ArSize); cout << "Enter you favorite dessert : " << endl; cin.getline(dessert,ArSize); cout << "I have some delicious " << dessert; cout << " for you," << name << endl; return 0; }
釋義:
cin是將一個單詞作為輸出,而有些時刻我們須要將一行作為輸出,如 I love C++
iostream中類供給了一些面向行的類成員函數,如getline()和get(),這兩個都是讀取一行的輸出,直到換行符停止,差別是getline()將拋棄換行符
get()將換行符保存在輸出序列中
面向行的輸出:getline(char* cha,int num)
getline()讀取整行,經由過程換行符來肯定開頭,挪用可使用 cin.getline(char* cha,int num),成員函數的方法應用,第一個參數是用來存儲輸出行的數組的稱號,第二個參數是要讀取的字符數,假如這個字符數的參數為30,則最多讀入29個字符,余下的用於存儲主動在開頭處添加的空字符。
get()存儲字符串的時刻,用空字符開頭。
假如碰到這類情形咋辦?
# include <iostream> using namespace std; int main(void) { cout << "What year was your house built? " << endl; int year; cin >> year; //char ch; //cin.get(ch); 吸收換行符 (cin >> year).get(); cout << "What is its street address ? " << endl; char address[80]; cin.getline(address, 80); cout << "Year built : " << year << endl; cout << "Address : " << address << endl; cout << "Done ! " << endl; return 0; }
地址還沒有輸出,就停止了...
去失落下面的留意,加一個字符,吸收換行符便可以了...
注:C++法式常應用指針而不是數組來處置字符串
以上就是本文的全體內容,願望對年夜家的進修有所贊助。