[英]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.