абсолютный путь fstream не работает - PullRequest
0 голосов
/ 17 октября 2010

Это действительно странно. Абсолютный путь не работает ни для ifstream, ни для ostream. Это работает, когда я использую относительный путь, например, так:

ofstream out;
out.open("file2.txt");
string river = "i love cheese";

if(!out){
    cout << "error"; // have breakpoint set here
} else {
    out << river; // have breakpoint set here (stops here when debugging)
}

out.close();

Но когда я использую абсолютный путь, это не так. Я хорошо знаю, что мне нужно использовать "\" для косой черты, и я попытался использовать вместо него "/", и он все еще не работает.

ofstream out;
out.open("C:\\file2.txt"); // also tried "C:/file2.txt"
string river = "i love cheese";


if(!out){
    cout << "error"; // have breakpoint set here (stops here when debugging)
} else {
    out << river; // have breakpoint set here
}

out.close();

Мне действительно нужно, чтобы он работал с абсолютным путем, поскольку именно это предоставляется функции, а входные и выходные файлы не всегда будут находиться в той же папке, что и двоичный файл.

1 Ответ

3 голосов
/ 18 октября 2010

Какая у вас операционная система? Windows 7 не позволяет создавать файлы на C: \. Вы можете создать новую папку на C: \, например C: \ temp \ и попробовать этот код:

std::ofstream out;  
out.open("C:\\temp\\asd.txt" );
if( ! out )
{
    std::cout << "1";
}
if ( !out.is_open() )
{
    std::cout << "2";
}
out.close();

Это отлично работает. Но когда вы попытаетесь создать файл на C: \, он напечатает «12».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...