文件输入不返回良好
File Input Not Returning Good
很抱歉问这样一个基本的问题,但我真的不明白为什么In3不好。我想这里有一些我不知道的基本问题
Thanks in advance
文件"testIn1.txt"的内容如下:A b c
我使用的是MS Visual c++ 2010 Express.
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream In3;
ofstream Out3;
In3.open("testIn1.txt", fstream::in);
Out3.open("testOut1.txt", fstream::app);
cout << "Is In3 Good? " << In3.good() << endl;
cout << "Is OUt3 Good? " << Out3.good() << endl;
In3.close();
Out3.close();
}
适用于我(使用mingw++作为编译器):
C:>echo a b c a > testIn1.txt
C:>g++ test.cpp -otest.exe
C:>test
Is In3 Good? 1
Is OUt3 Good? 1
注意testIn1.txt应该和可执行文件在同一个目录下,或者你应该给程序一个文件的路径。如果testOut1.txt是在运行程序之后创建的,那么您可以验证您在正确的目录中(当然,之前没有)。
我想到的其他一些事情:
- 输入文件被锁定(如埃米尔建议)。重启会有帮助,您也可以使用像WhoLockMe这样的工具来进一步调查这个问题。此外,在这种情况下,删除或重新创建testIn1.txt应该会给出一个错误。答:MSVC使用调试/发布文件夹。根据所设置的配置,您可能会运行较旧版本的程序,这可能会非常令人困惑。确保你在正确的文件夹中,可能会删除旧的二进制文件和test/testOut文件,并检查时间戳以确保。
获取文件所在的目录,试试下面的代码(源代码):
#include <unistd.h>
char *path=(char*)malloc(1024*sizeof(char));
size_t size;
path=getcwd(path,size);
cout<<"current Path: "<<path<<endl;
free(path);
请注意,MS编译器可能会抱怨getcwd
和/或unistd.h
,在这种情况下尝试_getcwd
。
我在Windows和Linux上都测试了你的程序。
案例1
文件在Windows和Linux中不存在,或者
案例2
在Windows中,如果文件存在,应该没有问题,在Linux中,如果Name of File
没有输入正确的Case/Caps
,那么它可能无法打开。
如果没有设置流的错误标志(eofbit, failbit and badbit)
,则good()
函数返回true。
试着添加这个语句,看看你得到了什么:
cout << "Fail " << In3.fail() << endl;
相关文章:
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 从 cin 读取不会返回整个输入字符串
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 返回C++输入
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- cpp 返回具有相同输入的不同输出
- 从子菜单返回后,正确的输入至少进入验证循环一次
- C++ CIN 值返回 0 而不是输入值
- 输出返回编号。等于输入字符串的单词的字符串数
- 函数重载并根据相同的输入返回不同的数据类型
- 如何根据输入C++更改返回类型?
- 函数返回包含输入容器的特定元素的容器
- C++输入为什么当我输入一个字母时会返回0
- 阶乘函数只返回C++中输入的答案
- 查找匹配的输入,并返回匹配的输入和不匹配的输入
- 实现一个函数,该函数将字符串作为输入并返回一个新字符串,辅音字母不替换为 "!"
- 当条件不满足时,必须返回输入
- 行号:使用 __LINE__ 返回输入文件的行号的任意方法
- 函数不返回输入到数组中的最高值和最低值
- 为什么 ifstream 返回输入文件的最后一个值两次