C++ 保存一个文本文件
C++ Save a text document
我一直在开发我的游戏,我可以轻松保存我的文本文档,一切正常。我的问题是,如何将文本文档保存到名为 "Saves." 的文件中这是我的代码。
还有!我从
获取 char* 名称的输入
Save(gets(new char [50]));
为什么这段代码在这里不起作用?
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
我接受了你所说的关于使用字符串的内容,但它没有创建文件,我得到了保存失败,主要问题错误。
if(saveFile)
{
system("cls");
string prename;
cout << "Enter level's number: ";
cin >> prename;
string name = "Files/" + "Saves/" + prename + ".asciip";
ofstream out(name, ios::binary);
if (!out.is_open()){ MessageBox( 0, "Saving failed! Main problem.", 0, MB_ICONERROR); system("cls"); RedrawMap(); return 0; }
system("cls"); cout << "Saving...";
system("cls");
ShowConsoleCursor(false);
cout << "Saving...";
Sleep(1000);
for(int i = 9; i < SizeY; i++)
{
for(int j = -1; j < SizeX; j++)
{
out << Map[i][j].ch << endl;
out << (int)Map[i][j].color << endl;
}
}
}
cout << '\a';
out.close();
}
在文件名前加上 "Saves/"
char* newArray = new char[strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"Saves/");
strcat(newArray,name);
strcat(newArray,".asciip");
另外 std::string class 是为存储和操作字符串而设计的。比 C 字符串更容易使用并且更不容易出错。 Info on string.
编辑:
你的第一段代码
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
不起作用,因为您在应该使用 strcat 的地方使用了 strcpy。
strcpy(newArray,"Saves/");
strcpy(newArray,name);
应该是
strcat(newArray,"Saves/");
strcat(newArray,name);
关于创建文件的问题,这些文件夹是否已经存在? ofstream
可以新建文件到指定文件夹,但不能新建文件夹。参见
我一直在开发我的游戏,我可以轻松保存我的文本文档,一切正常。我的问题是,如何将文本文档保存到名为 "Saves." 的文件中这是我的代码。
还有!我从
获取 char* 名称的输入Save(gets(new char [50]));
为什么这段代码在这里不起作用?
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
我接受了你所说的关于使用字符串的内容,但它没有创建文件,我得到了保存失败,主要问题错误。
if(saveFile)
{
system("cls");
string prename;
cout << "Enter level's number: ";
cin >> prename;
string name = "Files/" + "Saves/" + prename + ".asciip";
ofstream out(name, ios::binary);
if (!out.is_open()){ MessageBox( 0, "Saving failed! Main problem.", 0, MB_ICONERROR); system("cls"); RedrawMap(); return 0; }
system("cls"); cout << "Saving...";
system("cls");
ShowConsoleCursor(false);
cout << "Saving...";
Sleep(1000);
for(int i = 9; i < SizeY; i++)
{
for(int j = -1; j < SizeX; j++)
{
out << Map[i][j].ch << endl;
out << (int)Map[i][j].color << endl;
}
}
}
cout << '\a';
out.close();
}
在文件名前加上 "Saves/"
char* newArray = new char[strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"Saves/");
strcat(newArray,name);
strcat(newArray,".asciip");
另外 std::string class 是为存储和操作字符串而设计的。比 C 字符串更容易使用并且更不容易出错。 Info on string.
编辑: 你的第一段代码
char* newArray = new char[strlen("PaintAPicture/")+strlen("Saves/")+strlen(name)+strlen(".asciip")+1];
strcpy(newArray,"PaintAPicture/");
strcpy(newArray,"Saves/");
strcpy(newArray,name);
strcat(newArray,".asciip");
不起作用,因为您在应该使用 strcat 的地方使用了 strcpy。
strcpy(newArray,"Saves/");
strcpy(newArray,name);
应该是
strcat(newArray,"Saves/");
strcat(newArray,name);
关于创建文件的问题,这些文件夹是否已经存在? ofstream
可以新建文件到指定文件夹,但不能新建文件夹。参见