日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++中g(shù)etline函數(shù)多種定義的使用方法

getline()函數(shù)是一個(gè)相當(dāng)常見的工具,用于從輸入流中獲取一行數(shù)據(jù)。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、新城網(wǎng)站維護(hù)、網(wǎng)站推廣。

下面我們將詳細(xì)說明C++中的getline()函數(shù)用法,以及在使用getline()函數(shù)作為while循環(huán)條件時(shí)需要注意的問題:

在C++中,getline函數(shù)本質(zhì)上有兩種形式:

第一種形式:作為iostream類的成員函數(shù),需要在頭文件中聲明。

第二種形式:作為普通函數(shù),也需要在頭文件中聲明。

第一種形式的getline()函數(shù)有兩種重載形式:

1. istream& getline(char* s, streamsize n);

2. istream& getline(char* s, streamsize n, char delim);

這兩種形式的作用都是從輸入流中讀取最多n個(gè)字符(包括終止字符),然后將它們保存在字符數(shù)組s中。即使在讀取不滿n個(gè)字符的情況下,如果遇到指定的delim字符或達(dá)到字符數(shù)限制,讀取操作也會(huì)終止,而且delim字符不會(huì)被保存在s中。

#include 
// std::cin ;  std::cout ;  std::endl
int main()
{
	char name[256], wolds[256];
	std::cout << "Please input your name: ";
	std::cin.getline(name, 256);
	std::cout << "Please input your wolds: ";
	std::cin.getline(wolds, 256);
	std::cout << "The result is:   " << name << ", " << wolds << std::endl;
	std::cout << std::endl;
	return 0;
}

輸入:Mr. Ling

You are fantastic!

輸出:

Mr. Ling, You are fantastic!

通過字符數(shù)限制和指定終止字符進(jìn)行修改的代碼示例:

#include 
// std::cin ;  std::cout ;  std::endl

int main(){
	char name[6];

	std::cout << "Please input your name: ";

	std::cin.getline(name, 6, '#');

	std::cout << "The result is:   " << name << std::ends;

	std::cout << std::endl;//學(xué)習(xí)交流群:558970390

	return 0;
}

輸入: //streamsize限定,截?cái)噍敵?wonderful
輸出:wonde

輸入: //所設(shè)置的結(jié)束標(biāo)識(shí)符,截?cái)噍敵?won#derful
輸出:won

第二種方法:在C++中的getline函數(shù)具有四種不同的載入形式:

istream& getline (istream& 輸入流, string& 字符串, char 分隔符);

istream& getline (istream&& 輸入流, string& 字符串, char 分隔符);

istream& getline (istream& 輸入流, string& 字符串);

istream& getline (istream&& 輸入流, string& 字符串);

這些函數(shù)的用法與第一種方法類似,但是它們接受一個(gè)輸入流作為參數(shù),將讀取的內(nèi)容存儲(chǔ)在字符串類型的字符串中。

函數(shù)參數(shù)的解釋:

輸入流:表示一個(gè)輸入流,例如cin。

字符串:這是一個(gè)字符串類型的引用,用于保存從輸入流中讀取的文本。

分隔符:這是一個(gè)字符類型的變量,用于指定何時(shí)終止讀取;如果未自定義分隔符,函數(shù)將在遇到換行符'\n'時(shí)終止讀取。

以下是一個(gè)示例代碼:

#include 
#include 
int main() {
	std::string name;
	std::cout << "Please input your name: ";
	std::getline(std::cin, name);
	std::cout << "Welcome to here!" << std::ends << name << std::endl;
	std::cout << std::endl;
	return 0;
}

在輸入數(shù)據(jù)時(shí),只有在遇到換行符或文件結(jié)束時(shí),才會(huì)停止接受輸入。

文件結(jié)束(EOF)是C語(yǔ)言中用于區(qū)分有效數(shù)據(jù)和輸入結(jié)束的特殊標(biāo)志。EOF的輸入方式取決于操作系統(tǒng),例如在Windows下是使用Ctrl+Z,在Linux/Unix下是使用Ctrl+D。

需要注意的是,getline()函數(shù)并非C庫(kù)函數(shù),而是C++庫(kù)函數(shù)。它會(huì)在以下情況下終止讀取并生成當(dāng)前字符串:

1. 達(dá)到文件末尾。

2. 遇到指定的定界符(默認(rèn)定界符是換行符,所以遇到換行符時(shí)會(huì)返回)。

3. 輸入達(dá)到最大限制。

在下面的示例代碼中,我們使用getline()函數(shù)在while循環(huán)中作為條件判斷,實(shí)現(xiàn)逐行讀取并輸出:

#include 
#include 
using namespace std;
int main() {
string line;
while (getline(cin, line))
cout << line << endl;
return 0;
}
```

大家可能會(huì)發(fā)覺,在運(yùn)行時(shí),通常的輸入方式都無法中斷循環(huán),有時(shí)甚至可能出現(xiàn)難以理解的錯(cuò)誤。那么,究竟是什么原因?qū)е铝诉@種情況呢?接下來我們來詳細(xì)分析一下:

getline()函數(shù)的定義如下:istream& getline(istream & is, string & str, char delim);

在這個(gè)語(yǔ)句中,while循環(huán)的判斷條件實(shí)際上是關(guān)于cin(標(biāo)準(zhǔn)輸入流)的狀態(tài),也就是判斷當(dāng)前是否存在有效的輸入數(shù)據(jù)流。

值得注意的是,輸入流是一個(gè)對(duì)象,我們?cè)谂袛鄷r(shí)考慮的是這個(gè)流返回的狀態(tài)。因此,在正常情況下,無論你如何輸入,都無法跳出這個(gè)循環(huán)。

有些人可能會(huì)錯(cuò)誤地認(rèn)為while循環(huán)的判斷條件是關(guān)于"line"(即字符串line是否為空)的,試圖通過輸入回車來中斷循環(huán),但卻發(fā)現(xiàn)這并不奏效。

事實(shí)上,回車和設(shè)置的分隔符都可以用來終止getline()函數(shù)的讀取操作。然而,while循環(huán)的判斷條件實(shí)際上是在判斷getline()函數(shù)的輸入流是否有效。


網(wǎng)站題目:C++中g(shù)etline函數(shù)多種定義的使用方法
文章起源:http://m.5511xx.com/article/copjics.html