gpt4 book ai didi

c++ - 无法理解这个 C++ 程序的返回值

转载 作者:行者123 更新时间:2023-11-30 05:01:21 25 4
gpt4 key购买 nike

我在 Stroustrup 的 TCPPPL 中遇到了以下程序:

int main()
{
string from, to;
cin >> from >> to; // get source and target file names

ifstream is {from}; // input stream for file "from"
istream_iterator<string> ii {is}; // input iterator for stream
istream_iterator<string> eos {}; // input sentinel

ofstream os{to}; // output stream for file "to"
ostream_iterator<string> oo {os,"\n"}; // output iterator for stream

vector<string> b {ii,eos}; // b is a vector initialized from input [ii:eos)
sort(b.begin(),b.end()); // sor t the buffer

unique_copy(b.begin(),b.end(),oo);// copy buffer to output, discard //replicated values
return !is.eof() || !os; // return error state (§2.2.1, §38.3)
}

我的问题是最后一行是什么,即 return !is.eof() ||!os; 在做什么。我知道如果 main 返回非零值那么它意味着一个错误但是这里返回了什么?

最佳答案

!is.eof()

返回您是否不在正在阅读的文件末尾(所以 true 表示不在末尾,false因为在最后)和

!os

返回您的输出文件是否不可可写。换句话说,这个程序返回:

  1. true 当您还没有到达输入文件的末尾时(不管 2.)
  2. true 当输出文件不可写时(不管 1.)
  3. false 当您位于文件末尾且输出文件可写时。

关于c++ - 无法理解这个 C++ 程序的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com