一口、行きます：

#iblude <iostream>
#include <fstream>
#include <string>
名前空間STDを使用。

int main（）{
    コンストリームファイル。
    文字列ファイル名、行;
    cout << "ファイルの名前を入力してください：";
    getline（cin、filename）;
    file.open（fillename）;
    if（file.is_open（））{
        cout << "ファイルに書き込むために行を入力してください：";
        getline（cin、line）;
        file << line << endl;
        file.close（）;
        cout << "ファイルは正常に保存されました。"<< endl;
    } それ以外 {
        cout << "ファイルを開くことができませんでした。」<< endl;
    }
    0を返します。
}

このコードはエラーなしで動作するはずです。ユーザーが入力したファイルの名前に正しい拡張機能があることを確認することが重要です（たとえば、テキストファイルの「.txt」など）。
Sip, ahí va:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    ofstream file;
    string filename, line;
    cout << "Ingrese el nombre del archivo: ";
    getline(cin, filename);
    file.open(filename);
    if (file.is_open()) {
        cout << "Ingrese la línea a escribir en el archivo: ";
        getline(cin, line);
        file << line << endl;
        file.close();
        cout << "El archivo se ha guardado exitosamente." << endl;
    } else {
        cout << "No se pudo abrir el archivo." << endl;
    }
    return 0;
}

Este código debería funcionar sin errores. Es importante asegurarse de que el nombre del archivo ingresado por el usuario tenga la extensión correcta (por ejemplo, ".txt" para un archivo de texto).