第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C++如何不使用字符串讀入一行不定數(shù)目的整數(shù)?

C++如何不使用字符串讀入一行不定數(shù)目的整數(shù)?

桃花長(zhǎng)相依 2019-04-19 16:12:45
本來以為while(cin>>a[n++]);可以直接讀入一行結(jié)束,但是發(fā)現(xiàn)根本無法退出循環(huán),用VS調(diào)試到行尾就看不到內(nèi)容了,而此時(shí)循環(huán)沒有退出也沒有報(bào)錯(cuò)。大概是把換行符當(dāng)整數(shù)讀入了所以cin并沒有fail?然后嘗試了:inttemp;while(true){cin>>temp;if(temp=='\n')break;a[n++]=temp;}樣例可以過,但是依然不能AC(OJ上的一道題),我想大概是可能有跟\nASCII值相同的整數(shù)。當(dāng)然,可以用字符串先整行讀入再解析,但是難道C++中沒有更好更簡(jiǎn)潔的方法嗎?因?yàn)閱栴}本身并不難。
查看完整描述

2 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

自己處理空格還是蠻麻煩的。一般用sstream就好,真要想自己做,也是可以。
#include
usingnamespacestd;
//returntrueif\n,orreturnfalse
boolescape_white_space(istream&is)
{
chardummy;
while(true)
{
is>>dummy;
if(dummy=='\n')
{
returntrue;
}
elseif(!isspace(dummy))
{
is.putback(dummy);
returnfalse;
}
}
}
intmain()
{
inta[10];
cin>>std::noskipws;
intn=0;
while(true)
{
if(escape_white_space(cin))
break;
cin>>a[n++];
}
for(inti=0;i{
cout<}
return0;
}
再延伸一步,可以自己寫一個(gè)manipulator。
//willabsorbwhitecharacterbutiflinebreak,thenseterror
istream&ws_on_lb_error(istream&is)
{
chardummy;
while(true)
{
is>>dummy;
if(dummy=='\n')
{
is.setstate(ios_base::failbit);
returnis;
}
elseif(!isspace(dummy))
{
is.putback(dummy);
returnis;
}
}
}
怎么用呢?和標(biāo)準(zhǔn)的manipulator一樣用!
inta[10];
cin>>std::noskipws;
intn=0;
//假設(shè)開頭沒有任何whitespace
while(cin>>a[n++]>>ws_on_lb_error)
{
}
cin>>xyz返回false的唯一原因是failbit或者badbit被設(shè)置了。所以你自己寫可以自己根據(jù)\n設(shè)置failbit。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-19
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

用cin讀int會(huì)直接跳過空格回車,沒辦法區(qū)分是否換行。
一個(gè)辦法是把整行讀出來然后再用sscanf或者sstream,這樣也不算很麻煩。直接讀大概是沒辦法了。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-19
  • 2 回答
  • 0 關(guān)注
  • 758 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)