程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 商量數組與字符串輸出的成績(C++版)

商量數組與字符串輸出的成績(C++版)

編輯:關於C++

商量數組與字符串輸出的成績(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++法式常應用指針而不是數組來處置字符串

以上就是本文的全體內容,願望對年夜家的進修有所贊助。

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