为什么此 C++ 代码不创建文本文件?

Why does this C++ code not create a text file?

我正在尝试开始使用 C++ 制作一个随机密码生成器,该生成器输出到一个文本文件。我使用了 c++ 教程 http://www.cplusplus.com/doc/tutorial/files/

我正在使用 Visual Studio Express 2012

但是代码没有打开任何东西。当我 运行 除了控制台弹出并说 "press any key..."

之外,程序什么也没有发生
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
char string1[8];
static const char alphanum[] =
    "0123456789"
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < 8; ++i) 
{
    string1[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
}

ofstream myfile;
myfile.open ("example1.txt");
system("PAUSE");
myfile.close();
return 0;
}

我希望这是在创建一个文件,它不太可能位于您期望的位置。根据您 运行 安装文件的方式,它可能不在 exe 所在的位置,而是在您设置工作目录的位置。如果你想真正测试 运行 来自 shell 的 exe 或直接从它所在的目录中的命令提示符。

同样值得注意的是,在您关闭文件之前,可能不会写入文件。看这里:http://www.cplusplus.com/doc/tutorial/files/ 当调用 close 方法时,这会将输出刷新到文件中。您可能应该在暂停之前调用它。

函数void open (const char* filename,ios_base::openmode mode = ios_base::in | ios_base::out);。默认模式是in|out,但是文件不存在,所以open()执行失败。所以你应该只使用 out 模式来创建一个新文件,试试 open("example1.txt", ios::out)。您可以在这里看到的原因:

myfile.open("example1.txt");
if(! myfile.is_open())
    cout << "open failed" << endl;
myfile.close();

根据上面的代码,可以得到open failed。希望对您有所帮助。