【问题标题】:Adding to the name of a file添加到文件的名称
【发布时间】:2014-09-10 04:30:19
【问题描述】:

我正在开发一个处理文本文件的应用程序,我想创建一个与该文件名称相似但稍作修改的新文件。

例如,我有一个函数,它将字符串文件名作为参数,并创建一个新文件,在“.txt”之前添加了单词“PROCESSED”。

所以如果fileName = "testFile.txt" 新文件应命名为“testFilePROCESSED.txt”

string newFile = filename + "PROCESSED"; 显然不起作用,因为在这种情况下文件名将是“testFile.txtPROCESSED”。

【问题讨论】:

  • hm,你需要找到最后一个点出现,制作切片并组合新字符串。你卡在哪里了?
  • substrrfindcomparefind_last_of等函数可以帮助你string class
  • 你需要获取不带扩展名的文件名。您可以在此答案中使用代码 - stackoverflow.com/questions/6646702/…

标签: c++ filenames


【解决方案1】:

你只需要更多的字符串练习:

int ii = filename.rfind('.');
filename.insert(ii, "PROCESSED");

【讨论】:

  • brrr,讨厌这种答案。 OP想要一个结果,人给出一个答案。实践?不。思维?不。教育?没有。
  • @FoggyDay:谢谢,我真的应该考虑包含几个这样的链接。
  • @gaussblurinc:我明白你的意思,但这不是 OP 可以推断的;如果你知道方法,问题就很简单,如果你不知道它们,你就必须重新发明轮子。重新发明轮子可能很有教育意义,但我认为在这种情况下,正确的答案是“这里有一些工具可以让它变得微不足道,用它们来玩,你就会变得精通。”
  • @Beta OP 使用字符串类,不想查看文档内部并查看该类的能力。当然,如果你不考虑问题和可能的解决方案,为什么你应该成功?
【解决方案2】:

让我们保持简单,我假设 fileName 是一个字符串。

`#include <sstream>`

using namespace std;
stringstream ss;
fileName.erase(name.end()-4, name.end()); //Extension removal.
ss << name << "PROCESSED.txt";
string newFileName = ss.str();

【讨论】:

  • 好吧,谢谢你的反对,但我只是根据他给出的假设回答,所以没有必要反对。有更好的方法,但我觉得这很有用,这就是我包含它的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多