C++ 尝试生成文件C+时出错+;

C++ 尝试生成文件C+时出错+;,c++,file,file-format,ofstream,C++,File,File Format,Ofstream,我基本上知道如何将文本导出为自己的文件格式 我决定开发一个名为“.msq”的扩展,我想知道如何保护它的内容。目前,如果您在文本编辑器中打开这个.msq文件,您可以看到文本-我不希望发生这种情况。我们怎样才能保护它呢 我遇到的另一个错误是我无法命名我的文件。我得到了这个错误 no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::basic_string<char>)

我基本上知道如何将文本导出为自己的文件格式

我决定开发一个名为“.msq”的扩展,我想知道如何保护它的内容。目前,如果您在文本编辑器中打开这个.msq文件,您可以看到文本-我不希望发生这种情况。我们怎样才能保护它呢

我遇到的另一个错误是我无法命名我的文件。我得到了这个错误

no matching function for call to 
'std::basic_ofstream<char>::basic_ofstream(std::basic_string<char>)'
ofstream examplefile (file_name+".msq");

至于保护“.msq”文件,我该怎么做呢

如果你想保护你的文件,你必须对它进行加密

关于这一点,我推荐Bruce Schneier的《应用密码学》一书,或者如果你想快一点的话,可以看看一些源代码。请注意,加密代码在某些国家受法律严格控制,根据您的居住地,您可能无权下载此代码(不是开玩笑!)


但你的问题只是转移了。现在您的文件已经加密,除非您使用用户提供的密钥(密码),否则您必须将密钥嵌入到您的soruce代码中,这很容易受到基本黑客技术的攻击

ofstream构造函数需要一个
常量char*
作为文件名,而不是字符串。首先创建字符串,然后使用
文件\u name.c\u str()
。关于保护文件,将其保存为二进制文件可以做到这一点。保护数据不是黑/白问题。保护应按级别或程度考虑。例如,加密可以增加一些保护,但高级黑客仍然可以读取它。请记住,保护越好,数据使用就越困难。欢迎使用堆栈溢出。你这里似乎有两个问题,我建议你编辑帖子,只问一个问题,然后把另一个作为新问题发布。getline()返回一个istream而不是字符串()。你能提供你的真实代码(至少一个编译的代码)吗?为什么你想“保护”你的文件?你担心人们读它还是写信给它?
string file_name = getline(cin, name), where name is the input given by the user