将字符串添加到字符串指针
Adding a string to a string pointer
是否可以在C++中向字符串指针添加字符串?不起作用的示例:
String* temp;
temp[0] = "string";
就像在中一样
String temp[3];
temp[0] = "string";
在建议只使用普通数组或将其复制到其他固定数组之前,需要在函数中返回字符串指针。例如
String* SomeClass::toArray(String str)
我也对如何从这个函数返回数组的其他建议持开放态度。
不确定什么是String
这个代码片段
String* temp;
temp[0] = "string";
如果它被编译,则会导致未定义的行为,因为指针temp要么具有不确定的值(如果它是本地变量),要么为NULL,并且您可能无法解除对它的限制。
假设此代码片段
String temp[3];
temp[0] = "string";
是有效的,你可以写例如
String* other_temp = temp;
other_temp[0] = "string";
您不能向POINTER添加任何内容,指针只是指向一些内存。您首先需要有一些实例,比如在第二个实例String temp[3];
中,您正在创建三个String
实例。
所以String temp;
将创建String
的本地实例,然后为了获得它的指针,您可以使用String * tempPtr = &temp;
,但我不明白您为什么要这样做,因为您可以按原样使用temp
……就像temp.clear();
或String
类的任何函数一样(请参阅它的API)。
编辑有关返回字符串指针的信息。
这是一种不幸的C++API设计。那么,谁将拥有那个例子的记忆呢?
例如:
String* SomeClass::toArray(String str) {
String result;
// BUG, DO NOT DO THIS!
return &result; // returns pointer to local stack variable
// which gets released *here*, invalidating the pointer
}
String* SomeClass::toArray(String str) {
String *result = new String;
return result; // returns pointer to global heap
// now if the upper layer of code will not call "delete" on it
// you have memory leak
}
顺便说一句,从"toArray"名称来看,您想要的是String实例的数组,而不是String指针。因此,函数应该定义为String[] SomeClass::toArray(String str)
,在内存所有权方面仍然存在同样的问题。
我要做的是不返回数组。可能是void SomeClass::toArray(const String & str, std::vector<String> & array)
,将数据填充到array
向量中。
我不知道你在arduino上用了多少C++,如果std::vector可以的话,但有一个String类感觉就像vector<>也可以,特别是如果您通过传递String的副本实例而不是引用来浪费堆栈的话。(除非String
是char[]
的某个宏/typedef,请不要告诉我……我的意思是,即使C++也可以用低内存占用的方式编写,如果你避免不必要地分配C++类的临时实例,你就不必到处硬连接数组)。
- strcpy 在类中无法使用字符串指针
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 使用conststd::字符串指针作为函数参数
- 将字符串指针传递到C++和Xcode 11.1中不同线程上运行的函数
- OOP 和字符串指针的奇怪行为
- 在 C++ 中通过字符串指针复制字符串变量中的字符串
- 删除字符串指针在struct中的内存
- 字符串指针的排序向量
- C#C /CLR处理REF参数和字符串指针
- 问题在字符串指针中存储单词
- 如何在C++中从字符串指针中获取字符
- 如何使用字符串指针访问映射的键
- 将字符串指针与 NULL 以及 NULL 字符进行比较的目的
- 如何获取字符串指针的值?
- C++ 字符串* 指针未在控制台中正确打印
- Visual Studio C++ 空字符串指针
- 管理C#中返回的字符串指针
- 指向C++中的字符串指针数组的指针
- 如何将结果集设置为字符串指针
- 如何初始化字符串指针