C++getline()與get()用法
阿新 • • 發佈:2019-02-02
當程式使用cin輸入時,cin用空白符和行結束符將各個值分開。根據所需輸入的值,如需讀取一整行文字並且分開不同的域,則要使用getline成員函式
getline(char*line,int size,char ='"n') |
下面的函式從鍵盤讀取一行文字
#include<iostream> using namespacestd; int main() { char str[128]; cin.getline(str,sizeof(str)); cout <<"you typed :" } |
#include<iostream> using namespacestd; int main() { char str[128]; cout<<"please input text and enter"<<endl; cin.getline(str,sizeof(str),'X'); cout <<"you typed first line:"<<str<<endl; cin.getline(str,sizeof(str)); cout <<"sencond line :" } |
cin.getline() 與 cin>>str 的一個不同是,前者輸入一行,行中可以包含空格,後者卻以空格或回車作為字串結束,不包含空格。
用get()讀取一個字元
每次獲取一個字元:char istream:[img]editor/images/smilies/default/24.gif[/img]
//get.cpp #include<iostream> using namespace int main() { char letter; while(!cin.eof()) { letter=cin.get(); letter=toupper(letter); if (letter=='Y') { cout <<" "nY have been met "n"; break; } cout <<letter; } } |
$ ./get < get.cpp
letter =cin.get();與cin>>letter 都是從輸入流中取一個字元,但卻有區別,預設情況下,cin>>letter將跳過任何在檔案中發現的任何空白字元(空白字元指空格, tab,backspace,回車) .而cin.get不跳過空白字元。
用get()輸入一系列字元 istream&istream::get(char*,int n,char delim='"n'); istream fin("abc.txt"); char buffer[80]; fin>>buffer; //不能保證輸入字元個數在80以內。 可以改寫為 istream fin("abc.txt"); char buffer[80]; fin.get(buffer,80); //保證輸入字元個數在80以內 |
put成員函式,依次輸出字元。
#include<iostream> using namespacestd; int main() { char letter; for (letter='A'; letter<='Z';letter++) cout.put(letter); } |
#include<iostream> #include <fstream> using namespacestd; int main() { ifstream in("put.cpp"); if (in.fail()) { cerr<<"Error opening the file"n"; } while (!in.eof() ) { cout.put(in.get()); } } //注意get()這種形勢它讀取了空白符(含回車符),不跳過任何的字元。與 get(char * ,int n ,delim='"n')這種行式不同,他不包括分隔符delim. |