簡體   English   中英

避免eof C ++的“幻數”

[英]avoiding “magic number” for eof C++

我有一些在逐行瀏覽文本文件以標記數據並將其插入向量時循環的代碼。

我正在使用peek()測試文件是否在末尾,如果是這樣,則中斷循環:

if (fin.peek() == -1)
    break;

這可以正常工作,但是我對包含“幻數” -1感到有點煩。.是否有C ++庫,我可以包含與stdio.h相同的功能,該功能將-1預定義為EOF ,還是應該只定義const int eof = -1?

“魔術值” -1定義為Traits::eof ,其中Traits是fin變量類型的traits_type typedef。

換句話說, decltype(fin)::traits_type::eof

您想使用std::ios::eof() ,例如:

if (fin.eof())

    break;

通常,循環控件應執行所需的輸入。 如果輸入操作失敗,則循環終止:

std::string word;
while (std::cin >> word)
    std::cout << word << '\n';

暫無
暫無

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

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