2010-10-17 2 views
0

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

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(); 

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

+0

У вас есть разрешение на писать в 'C:'? – GManNickG

+0

Вызов 'perror (" open failed ");' когда 'out.open' оценивается как false. Это скажет вам, почему он не работает. –

+0

Выводит ли ошибка в консоль? Я делаю приложение Windows, у которого нет консоли. : -/ – alex

ответ

3

Что вы работаете с системой? 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(); 

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

+0

Я использую Vista, но я просто использовал «C: \» в качестве упрощенного примера. Документ, который я ищу для ввода/вывода, глубоко в «Мои документы» (который будет иметь длинный путь, окруженный двойными кавычками). – alex

+0

Я предполагаю, что Vista такая же, как Windows 7, поскольку мы говорим о таких привилегиях. Попробуйте другой каталог, он должен работать. Попробуйте в «Мои документы», как хотите. –

+0

Это папка, в которой находится исполняемый файл, и он все равно не будет писать: \ "C: \\ Users \\ Alex \\ Documents \\ Visual Studio 2008 \\ Projects \\ outputProject \\ Debug \\ file2. txt \ " – alex

Смежные вопросы