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

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

哪個(gè)自吹自擂的操縱者是“粘性”的?

哪個(gè)自吹自擂的操縱者是“粘性”的?

C++
翻閱古今 2019-07-27 15:15:48
哪個(gè)自吹自擂的操縱者是“粘性”的?最近我在創(chuàng)建一個(gè)stringstream因?yàn)槲义e(cuò)誤地假設(shè)std::setw()會(huì)影響每個(gè)插入的字符串流,直到我顯式地更改它。但是,它總是在插入之后被取消設(shè)置。// With timestruct with value of 'Oct 7 9:04 AM'std::stringstream ss;ss.fill('0');  ss.setf(ios::right, ios::adjustfield);ss << setw(2) << timestruct.tm_mday;ss << timestruct.tm_hour; ss << timestruct.tm_min;std::string filingTime = ss.str(); // BAD: '0794'所以,我有幾個(gè)問(wèn)題:為什么setw()這邊請(qǐng)?還有其他操縱者這樣嗎?在行為上有什么區(qū)別嗎?std::ios_base::width()和std::setw()?最后,是否有一個(gè)在線參考可以清楚地記錄這種行為?我的供應(yīng)商文檔(MSVisualStudio 2005)似乎沒(méi)有清楚地顯示這一點(diǎn)。
查看完整描述

3 回答

?
GCT1015

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

以下評(píng)論的重要說(shuō)明:

馬?。?/trans>

@Chareles:那么根據(jù)這個(gè)要求,所有的機(jī)械手都是粘性的。除了SET,它似乎在使用后被重置。

查爾斯:

一點(diǎn)兒沒(méi)錯(cuò)!而setw似乎行為不同的唯一原因是,格式化的輸出操作需要顯式地.Width(0)輸出流。

以下是導(dǎo)致上述結(jié)論的討論:


查看代碼,以下操作程序返回一個(gè)對(duì)象,而不是流:

setiosflags
resetiosflags
setbase
setfill
setprecision
setw

這是一種將操作應(yīng)用于僅應(yīng)用于流的下一個(gè)對(duì)象的常見(jiàn)技術(shù)。不幸的是,這并不能阻止他們粘在一起。測(cè)試表明,除了setw粘粘的。

setiosflags:  Stickyresetiosflags:Stickysetbase:      Stickysetfill:      Stickysetprecision: Sticky

所有其他操作器都返回流對(duì)象。因此,它們更改的任何狀態(tài)信息都必須記錄在流對(duì)象中,因此是永久的(直到另一個(gè)機(jī)械手改變狀態(tài))。因此,下列機(jī)械手必須是操縱者。

[no]boolalpha[no]showbase[no]showpoint[no]showpos[no]skipws[no]unitbuf[no]uppercase

dec/ hex/ oct

fixed/ scientific

internal/ left/ right

這些操縱器實(shí)際上對(duì)流本身執(zhí)行操作,而不是對(duì)流對(duì)象執(zhí)行操作(盡管從技術(shù)上講,流是流對(duì)象狀態(tài)的一部分)。但我不認(rèn)為它們會(huì)影響流對(duì)象狀態(tài)的任何其他部分。

ws/ endl/ ends/ flush

結(jié)論是,在我的版本中,setw似乎是唯一不粘的操縱者。

對(duì)查爾斯來(lái)說(shuō),一個(gè)簡(jiǎn)單的技巧就是只影響鏈中的下一個(gè)項(xiàng)目:
下面是一個(gè)示例,說(shuō)明如何使用對(duì)象臨時(shí)更改狀態(tài),然后通過(guò)使用對(duì)象將其放回原處:

#include <iostream>

#include <iomanip>


// Private object constructed by the format object PutSquareBracket

struct SquareBracktAroundNextItem

{

    SquareBracktAroundNextItem(std::ostream& str)

        :m_str(str)

    {}

    std::ostream& m_str;

};


// New Format Object

struct PutSquareBracket

{};


// Format object passed to stream.

// All it does is return an object that can maintain state away from the

// stream object (so that it is not STICKY)

SquareBracktAroundNextItem operator<<(std::ostream& str,PutSquareBracket const& data)

{

    return SquareBracktAroundNextItem(str);

}


// The Non Sticky formatting.

// Here we temporariy set formating to fixed with a precision of 10.

// After the next value is printed we return the stream to the original state

// Then return the stream for normal processing.

template<typename T>

std::ostream& operator<<(SquareBracktAroundNextItem const& bracket,T const& data)

{

    std::ios_base::fmtflags flags               = bracket.m_str.flags();

    std::streamsize         currentPrecision    = bracket.m_str.precision();


    bracket.m_str << '[' << std::fixed << std::setprecision(10) << data << std::setprecision(currentPrecision) << ']';


    bracket.m_str.flags(flags);


    return bracket.m_str;

}



int main()

{


    std::cout << 5.34 << "\n"                        // Before 

              << PutSquareBracket() << 5.34 << "\n"  // Temp change settings.

              << 5.34 << "\n";                       // After

}



> ./a.out 

5.34

[5.3400000000]

5.34




查看完整回答
反對(duì) 回復(fù) 2019-07-28
  • 3 回答
  • 0 關(guān)注
  • 371 瀏覽

添加回答

舉報(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)