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 可以新建文件到指定文件夹,但不能新建文件夹。参见