这真的很奇怪。绝对路径不适用于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();
我真的需要它使用绝对路径,因为这是提供给函数的内容,输入和输出文件并不总是与二进制文件位于同一文件夹中。
答案 0 :(得分: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();
这很好用。但是当你尝试在C:\上创建文件时,它会打印“12”。