首页 > 解决方案 > 如何创建类方法以返回现有类字段的子字符串(字符串类型)

问题描述

我是 C 和 C++ 的老自学用户,但现在已经习惯了 Unicode 字符串等......!

使用 C++ 我正在尝试向我的类添加一个方法以返回现有 Class 字段的子字符串。编译器不会让我返回子字符串,因为它是“临时的”。我该怎么做?,也许在一些宏转换中?

部分类定义:

#define TFTWDATA_MAXPARTS 20

class TFtwData {
private:
public:
   __fastcall          TFtwData(intiLevel, String   iPath);
   __fastcall          ~TFtwData();
   int       Level;      // Depth
   String    Path;       // Full Path of This File
   int      StartPos[TFTWDATA_MAXPARTS];
   int      Length  [TFTWDATA_MAXPARTS];
   String & GetPathPart(int i) { return Path.SubString(StartPos[i],Length[i]); } ;
};

构造函数将采用提供的文件路径,并创建一个定义文件名每个部分的 StartPos/Length 对数组。

我希望能够创建一个允许我访问任何部分的方法。

我可以将每个部分创建为字符串数组,但这是浪费空间。

标签: c++classunicodesubstring

解决方案


您好感谢您的回复。

我确实尝试过,添加 const 将我的错误更改为警告。例程 noe 要么什么都不做,要么崩溃。

我看到的说法是 SubString 函数在堆栈上创建它的结果,然后可以立即重新使用/销毁它。

如果我更改例程以将 SubString 的输出保存到静态字符串中,一切正常。

唯一的问题是数据将在下一次调用时被过度使用。我想我可以创建一个包含 100 个静态字符串的数组并轮流使用它们,也许这样会起作用。(我想我只需要足够处理一条指令中的最大调用量 - 即比较可能使用 2 次调用来完成此操作?)

我在任何地方都看不到 SubString 方法的内部,所以我不知道它是如何工作的。

关于如何实现这一目标的任何更好的想法

我有许多操作字符串的例程,我想返回它们而不必传入缓冲区来实现这一点。

关于如何实现这一目标的任何更好的想法


推荐阅读