我是一个自学成才的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对数组,定义文件名的每个部分。
我希望能够创建一个方法,允许我访问任何部分。
我可以将每个部分创建为字符串数组,但这是浪费空间。
查看String::SubString
的声明并重复返回类型
const String& GetPathPart(int i) {
return Path.SubString(StartPos[i], Length[i]);
}
嗨,谢谢您的回复。
我确实尝试过,添加const将我的Error更改为警告。常规noe要么什么都不做,要么崩溃。
我看到的是,SubString函数在Stack上创建了它的结果,然后可以立即重新使用/销毁。
如果我更改例程以将SubString的输出保存为静态String,那么一切都正常
唯一的问题是下一次调用时数据会被忽略。我想我可以创建一个由100个静态字符串组成的数组,并在旋转中使用它们,也许这会奏效。(我想我只需要足够的时间来处理一条指令内的最大调用量,即一个比较可能需要2个调用来完成这项任务?(
我在任何地方都看不到SubString方法的内部,所以我不知道它是如何工作的。
如何实现的任何更好的想法
我有很多处理字符串的例程,我想在不需要传递缓冲区的情况下返回它们来实现这一点。
如何实现的任何更好的想法