为什么此 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
。希望对您有所帮助。
我正在尝试开始使用 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
。希望对您有所帮助。