小编Jef*_*ger的帖子

为什么std :: fstream设置EOF位的方式呢?

我最近遇到了使用fstream :: eof()引起的问题.我从这里读到以下内容:

如果已到达关联输入文件的末尾,则函数eof()将返回true,否则返回false.

并且(错误地)假设这意味着如果我使用fstream :: read()并读取文件末尾,函数eof()会告诉我.所以我做了这样的事情(非常概括):

for(int i = 0; i < max && !file.eof(); i++)
{
     file.read(mything, sizeof(mything));
}
Run Code Online (Sandbox Code Playgroud)

出现这个问题的原因是上面链接的页面稍后解释了(由于误导性的第一段,我最初没有阅读):

相反,如果在最后一个令牌之后恰好有任何空格,则流不会进入EOF状态,但尝试读取另一个令牌仍然会失败.因此,EOF标志不能用作用于在EOF之前读取所有流内容的循环中的测试.相反,应该在尝试阅读后检查失败条件.

所以我改变了,现在我的循环检查file.fail()而不是file.eof(),我理解如何工作eof().我的问题是,为什么这样做?有没有这种情况需要?在我看来,一旦你通过EOF,你已经通过了EOF而eof()应该返回true.

更新 感谢您的回复,我想我已经得到了.我正在执行的唯一操作是read(),我立即检查fail(),所以我觉得我没事.现在,我的问题是,我使用eof()?

c++ iostream library-design

15
推荐指数
1
解决办法
7262
查看次数

Android TableLayout标题行

好的,所以我得到了这个TableLayout,以及它的全部数据 - 以编程方式添加了所有行.我在Horizo​​ntalScrollView中有TableLayout,而Horizo​​ntalScrollView又在ScrollView中 - 这使我可以水平和垂直滚动.我现在要做的是添加一个不会滚动的标题行.我试过移动东西,以便我的两个滚动视图实际上都在TableLayout中,并将TableRows添加到Horizo​​ntalScrollView; 我希望能够在滚动视图之外添加标题行.

我能想到的另一件事就是为标题行设置了第二个表格布局,但是让列排成一行似乎很难.有任何想法吗?

android android-layout android-tablelayout

13
推荐指数
2
解决办法
4万
查看次数

如何在NSMenuItem的操作上设置发件人?

Apple文档说传递给NSMenuItem的动作的发送者可以设置为一些自定义对象,但我似乎无法弄清楚如何做到这一点.有没有一种方法我在文档中没有看到某个地方?

cocoa nsmenuitem target-action

11
推荐指数
1
解决办法
5966
查看次数

不使用Interface Builder给我买东西吗?

我对Cocoa很新.我和我的兄弟说话,他把几个iPhone应用程序放在一起,我说了一些关于Interface Builder的东西.他说他不使用它 - 他以编程方式构建他的UI.他说这样,他不必担心加载NIB.我知道使用Interface Builder实际上创建了视图/窗口/按钮/ etc对象的实例,这些对象是序列化的,并且在加载应用程序时必须反序列化,但反序列化是否昂贵?当然,他正在谈论iPhone而我正在使用MacBook Pro进行开发,但仍然如此.

cocoa cocoa-touch interface-builder

5
推荐指数
2
解决办法
383
查看次数

ac结构的成员是否保证初始化为0?

当我在C中声明一个结构时,我保证会将成员初始化为某个特定值,例如0表示整数成员吗?

编辑:

所以,假设我有一个看起来像这样的结构:

typedef struct
{
     int a;
} my_str;
Run Code Online (Sandbox Code Playgroud)

我宣布:

my_str thing1;
Run Code Online (Sandbox Code Playgroud)

全球.根据一些答案,thing1.a将初始化为0 - 我是否理解正确?

c

3
推荐指数
2
解决办法
372
查看次数