簡體   English   中英

istream_iterator初始化向量

[英]istream_iterator to initialize vector

我正在嘗試從ifstream 鰭中讀取內容,並使用istream_iterators將其放入向量vec1中。 我到處都看過這些東西:

vector<int> vec1((istream_iterator<int>(fin)),istream_iterator<int>);

我想保留istream_iterators供以后使用,所以我認為“這應該可以工作”:

istream_iterator<int> iit(fin);
istream_iterator<int> eos;
vector<int> vec1(iit,eos);

...這是行不通的=(我的向量完全是空的。(我讀取的文件是一個txt文件,除了數字外什么都沒有)。

編輯: txt如下所示:

06351784798452318596415234561
6641321856006

根據注釋,第一個數字序列大於int的最大值,因此輸入操作將失敗,從而導致vector保持為空。

您可以使用std::numeric_limits模板獲取int等的最大值:

std::cout << std::numeric_limits<int>::max() << "\n";

作為中間步驟,您可能想要立即遍歷該序列以查看是否有東西(可能沒有):

while (iit != eos) {
    std::cout << *iit++ << '\n';
}

如果仍然無法打印任何內容,請先檢查您的信息流是否處於良好狀態:

if (!fin) {
    std::cout << "file not opened!\n";
}

如果流僅包含數字且沒有空格,則它很可能會溢出,因此讀取int失敗。

暫無
暫無

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

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