iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
Software Development

C++超級菜鳥也可以懂的物件導向攻略系列 第 3

Day03 - C++資料輸入之cin、getline()、cin.getline()有什麼差別?

  • 分享至 

  • xImage
  •  

在C++裡面,我們已經知道要怎麼輸出到console, std::cout << ;
那輸入呢?很簡單,std::cin >> ;
什麼時候會用到std::cin餒?在user從console輸入的時候,比方說,在上面我們用int age = 5;,我們已經知道年齡是5
但當我們讓user自己輸入自己年齡,就需要用到std::cin。

main(){
    int age; //先請記憶體空出名叫age的位子,但還沒有定義幾歲,還沒放數字進去,目前是空的 
    std::cout << "Type your age: "<< std::endl; //在console顯示Type your age 
    std::cin >> age;  //輸入數字後,就會儲存在之前創立好的int age裡面
    std::cout <<"Your age is "<< age; //輸出int age裡的數字(剛剛我們所輸入的)
} // console輸出:剛剛輸入進去的數字

點選run上面的程式碼以後,Console會出現下面這樣
Type your age:
24 //user輸入進去的數字(也只能輸入數字,因為age的data type是int
Your age is 24


如上範例,int數字的輸入可以用cin

int age;
std::cin >> 20;

想要輸入字串string的時候適合用什麼呢?getline();

std::string name;
getline(cin, name);

char,單個字元一個字母這種,可以用cin.getline();

char a[20];
cin.getlin(a, 20);

關於詳細int string char的意思與使用,請參考Day02的文章。

為什麼不能都用cin就好之getline()、cin.getline()和cin差別與用法

  • cin的用法:輸入一個數字或字元,可是可是,注意:一遇到空格就會結束了。所以在輸入字串時,“I love apple",遇到空格就停止,所以只會輸出I。
string f;
std::cin >> f; 假如輸入 I love apple.
std::cout << f;
//console顯示:  I
  • getline()的用法:接收一個字串,可以接收空格並輸出,記得要包含“#include”,並且getline()屬於string流
  • cin.getline()的用法:
cin.getline(接收字串的variable名稱, 輸入幾個字元, 結束字元);
#include <iostream>

using namespace std;

int main()
{
    char z[20]; //20格空間可以放字元
    cout << "type your input: ";
    cin.getline(z,20); //variable z接收的空間也有20格
    cout <<"Inserted: "; //輸入最多20個,超過就印不出來了,因為空間不夠放
    cout<< z; //輸出上面打的東西

    return 0;
}

由此可見,因為遇到空格就停止的原因cin適合放數字,其他兩個能接收空格適合放string或char~


上一篇
Day 02 - C++ Data Type資料類型
下一篇
Day04 - C++好簡單之來寫一個ASCII轉換器吧!基本輸入/輸出Input/Output應用
系列文
C++超級菜鳥也可以懂的物件導向攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言