如何创建一个类方法来返回现有类字段的子串(字符串类型)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建一个类方法来返回现有类字段的子串(字符串类型)?相关的知识,希望对你有一定的参考价值。

我是一个自学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]);  ;
;

构造函数将接受一个提供的文件路径 并创建一个StartPosLength对的数组来定义文件名的每一部分。

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

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

答案

看一下下面的声明 String::SubString 并重复返回类型

const String& GetPathPart(int i) 
  return Path.SubString(StartPos[i], Length[i]);

另一答案

你好,谢谢你的回复。

我确实试过了,添加const后,我的Error变成了警告。该例程要么什么也不做,要么崩溃。

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

如果我改变例程,将SubString的输出保存为静态字符串,一切都能正常工作。

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

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

有什么更好的办法来实现这个目标吗?

我有很多例程可以处理字符串,我想在不传递缓冲区的情况下返回它们。

有什么更好的办法来实现这个目标吗?

以上是关于如何创建一个类方法来返回现有类字段的子串(字符串类型)?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Linq to XML 创建基于类/模型的现有对象 - 工作,但有更好的方法吗?

JAVA中如何判断一个字符串是不是为另一个字符串的子串

c#的string的方法有几个

如何在Python中创建一个递归函数来创建一个映射Odoo 8关系字段记录的字典?

如何使用 Java 和 Gson 中的构建器模式将选择类字段序列化为 JSON 字符串?

Java 如何实现父类转换为子类的效果?