Работает для меня (используя MinGW g ++ в качестве компилятора):
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 должно привести к ошибке в этом случае.
- AFAIK, MSVC использует папки отладки / выпуска.В зависимости от установленной конфигурации вы можете запустить более старую версию программы, что может привести к путанице.Убедитесь, что вы находитесь в нужной папке, возможно, удалите старые двоичные файлы и файлы testIn / testOut и обязательно проверьте временные метки.
Чтобы получить каталог, в котором работает ваш файл, попробуйте этот код ( source ):
#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
в этом случае.