Mr.*_*Ben 10 c++ encoding file-extension
好吧,这是交易,我正在我的大学介绍C++课程,并且无法弄清楚如何更改文件的扩展名.首先,我们要做的是在.txt文件中读取并计算单词,句子,元音等等.我得到了这个,但下一步是令我不安的.然后我们假设使用与输入文件相同的文件名创建一个新文件,但扩展名为.code而不是.txt(在新文件中,我们将通过在每个ASCII码中添加随机数来对字符串进行编码你感兴趣的角色).作为编程的初学者,我不太清楚如何做到这一点.我正在使用以下代码来获取输入文件:
cout << "Enter filename: ";
cin >> filename;
infile.open(filename.c_str());
Run Code Online (Sandbox Code Playgroud)
我假设要创建一个新文件,我将使用类似的东西:
outfile.open("test.code");
Run Code Online (Sandbox Code Playgroud)
但是在用户输入之前我不知道文件名是什么,所以我不能说"test.txt".因此,如果有人知道在创建新文件时如何更改该扩展,我将非常感激!
dvh*_*mme 13
我偶尔会问自己这个问题并最终在这个页面上,所以为了将来的参考,这里是单行语法:
string newfilename=filename.substr(0,filename.find_last_of('.'))+".code";
Run Code Online (Sandbox Code Playgroud)
有几种方法可以解决这个问题.
您可以采用超级惰性方法,让它们只输入文件名,而不是.txt扩展名.在这种情况下,您可以将.txt附加到它以打开输入文件.
infile.open(filename + ".txt");
Run Code Online (Sandbox Code Playgroud)
然后你就打电话
outfile.open(filename + ".code");
Run Code Online (Sandbox Code Playgroud)
接下来的方法是获取整个文件名,包括扩展名,然后只需将.code附加到它,这样你就有了test.txt.code.
如果这是可以接受的话,这有点模棱两可.
最后,您可以使用std::string方法find,并replace获取没有扩展名的文件名,并使用它.
通过使用一个忙-当然,如果这不是作业,但一个真实世界的项目,你可能会做自己-以及其他人阅读你的代码Boost.Filesystem的的replace_extension(),而不是滚动您自己.只是没有足够简单的功能,你无法想出一个bug,至少在一些极端情况下.