对不起,如果我问的任何事情是显而易见的或是愚蠢的,我大约需要两周时间学习C ++。
编辑:我发现了问题,就是在文件的输出中,所有空格都更改为不同的字符。有人可以关闭这个问题吗?
我一直在努力编写一个收集有关假设员工数据的程序。最近,我试图让它从文件中读取 - 但是,每次我运行下面的代码(运行auto-complete-mode
)时,我都会遇到分段错误。使用断点,我将其缩小到lisp-interaction-mode-hook
。我测试了它并对其进行了测试,并且已经发现fix();
变量不是问题 - 即使我使用字符串文字,它仍会引发错误。我发现的其他事情:
- 隔离std::ifstream file(filename)
并将其放入另一个文件中,它无法引用任何此文件的变量。
- 当我输入不存在的文件的名称时,会发生 NOT 分段错误 - 相反,它会到达断点0(就像它应该的那样),打印filename
(就像它应该),并返回false(就像它应该)。
有谁知道为什么会发生这种情况以及如何解决这个问题?这困扰了我好几天。
(另外,我使用Ubuntu 14.04和G ++ 4.8 - 启动标志-std = c ++ 1y)
编辑好的,这变得非常奇怪。我做的第一件事是使用std::ifstream file(filename)
每隔一行调试我的程序。这将问题精确定位到Error in opening file.
。但是,根据@ M.M和@hyde的推荐,我通过Code :: Blocks调试器运行我的程序。它告诉我,分段错误发生在std::cout
。所以我评论了这一行 - 但是调试器仍然说这行是问题所在!它说这个问题是 评论出来 !我比以前更困惑。
std::ifstream
答案 0 :(得分:0)
这可能无法解决您的问题,但......
使用
while ( file )
{
...
std::getline(file, lineInput);
...
}
是个问题。请参阅Why is iostream::eof inside a loop condition considered wrong?。
使用
while ( file ) { }
遇到与使用相同的问题:
while ( !file.eof() ) { }
更改要使用的代码:
// Move the declaration of lineInput out of the loop.
std::string lineInput;
while ( std::getline(file, lineInput) )
{
...
}