簡體   English   中英

std :: ifstream :: read或std :: ofstream :: write使用零參數?

[英]std::ifstream::read or std::ofstream::write with a zero parameter?

是否完全可以(根據標准明確定義的行為)來調用:

mystream.read(buffer, 0);

要么

mystream.write(buffer, 0);

(當然,什么都不會被讀或寫)。 我想知道在調用這兩個函數之一之前是否必須測試提供的大小是否為null。

是的,行為是明確定義的:兩個函數都將通過無格式輸入/輸出函數的動作(構建哨兵,如果設置了eofbit則設置failbit,必要時刷新綁定流),然后他們將得到這個子句:

§27.7.2.3[istream.unformatted] / 30

提取並存儲字符,直到出現以下任何一種情況:

- 存儲n個字符;

§27.7.3.7[ostream.unformatted] / 5

插入字符,直到出現以下任何一種情況

- 插入n個字符;

在存儲或提取任何內容之前,“存儲/插入零字符”為真。

看一下實際的實現,我在libc ++sgetn(buffer, n);看到for (; gcount < n; ++gcount) sgetn(buffer, n); 在stdlibc ++中 ,它具有等效的循環

27.7.2.3 Unformatted input functions/1另一個提取給我們一個線索,即零大小的輸入緩沖區是有效的情況:

將格式為非零的字符數組作為參數的無格式輸入函數也應在數組的第一個位置存儲空字符(使用charT())。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM