我最近遇到了使用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()?
好的,所以我得到了这个TableLayout,以及它的全部数据 - 以编程方式添加了所有行.我在HorizontalScrollView中有TableLayout,而HorizontalScrollView又在ScrollView中 - 这使我可以水平和垂直滚动.我现在要做的是添加一个不会滚动的标题行.我试过移动东西,以便我的两个滚动视图实际上都在TableLayout中,并将TableRows添加到HorizontalScrollView; 我希望能够在滚动视图之外添加标题行.
我能想到的另一件事就是为标题行设置了第二个表格布局,但是让列排成一行似乎很难.有任何想法吗?
Apple文档说传递给NSMenuItem的动作的发送者可以设置为一些自定义对象,但我似乎无法弄清楚如何做到这一点.有没有一种方法我在文档中没有看到某个地方?
我对Cocoa很新.我和我的兄弟说话,他把几个iPhone应用程序放在一起,我说了一些关于Interface Builder的东西.他说他不使用它 - 他以编程方式构建他的UI.他说这样,他不必担心加载NIB.我知道使用Interface Builder实际上创建了视图/窗口/按钮/ etc对象的实例,这些对象是序列化的,并且在加载应用程序时必须反序列化,但反序列化是否昂贵?当然,他正在谈论iPhone而我正在使用MacBook Pro进行开发,但仍然如此.
当我在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 - 我是否理解正确?