c++ - 字符串提取

标签 c++ string extract

目前我正在使用 C++ 环境开发非常基础的游戏。该游戏曾经是一个学校项目,但现在我已经完成了编程类(class),我想扩展我的技能并在这个旧作业上做得更好。

我已经做了很多让我满意的改变。我已将所有数据集中到文件夹层次结构中,并且已获得读取这些位置的代码。

然而,我的问题源于一个一直困扰着我的非常根本的缺陷。

为了访问我正在使用的图像数据,我使用了代码:

string imageLocation = "..\\DATA\\Images\\";

string bowImage = imageLocation + "bow.png";

问题是,当玩家在游戏板上拿起元素时,我的代码应该使用以下代码:

hud.addLine("You picked up a " + (*itt)->name() + "!");

打印到命令行,“你拿起了弓!”。但相反,它显示“您选择了一个 ..\DATA\Images\!”。

在我集中使用我的数据之前:

name_(item_name.substr(0, item_name.find('.')))

在我的 Item 类构造函数中,将项目名称截断为弓或蜡烛之类的名称。在我更改了数据的结构后,我意识到我必须更改将名称缩减为相同的简单“弓”或“蜡烛”的方式。

我已经更改了上面的代码以反射(reflect)我对数据结构的更改:

name_(item_name.substr(item_name.find("..\\DATA\\Images\\"), item_name.find(".png")))

但不幸的是,正如我之前提到的,这种代码更改并没有像我计划的那样工作。

现在我已经对我的问题进行了冗长的介绍,这是我的问题。

如何提取不需要的两个部分之间的字符串中间部分?此外,您的目标中间部分的长度未知。

非常感谢你们提供的任何帮助。如果您需要更多信息,请询问;我将非常乐意上传部分甚至我的全部代码以获得更多帮助。再次非常感谢。

最佳答案

老实说,您可能从错误的角度来处理这个问题。

您的项目类应该在私有(private)成员中有一个字符串“bow”。然后函数 Item::GetFilePath 将(在运行时)执行“..\DATA\Images\” + this->name + “.png”。

“弓”项目对象的基本属性不是文件名 bow.png,而是它是一个“弓”这一事实。文件名只是派生属性。

关于c++ - 字符串提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367656/

相关文章:

javascript - 如何使用 underscore.js 查找字符串是否为空?

c - 如何从 MSI 数据库中提取部署文件

C++,对象的绝对地址在释放之前是否始终保持不变?

c++ - 在 switch case 中声明变量(子类别的枚举) - 什么是替代方案?

MySql 用转义字符替换部分字符串

java - 如何将字符串分成两部分?

java - 在java中计算句子中每个单词的频率

linux - 如何在 unix 中解压 tar.bz 文件?

c++ - OpenGL:在没有绘制顺序的情况下渲染具有大量纹理透明度的模型?

c++ - 是否有带有语法突出显示的命令行 C++ 到 PDF 转换器?