将字符串附加到C 中的类变量
Append strings to class variable in c++
我只是从C 开始,我需要帮助。我需要使用C 中的Append()函数附加字符串,并且我面临一些问题。这是我的代码。
class Foo
{
char* str1;
Foo()
{
Foo::str1=0;
}
void appendFoo(Foo foo1)
{
foo1.str1.append("Hello");
}
}
我知道上述代码是错误的。如何通过类Foo的对象附加字符串" Hello"。我希望对象foo1的str1值为Hello,如果我再次调用此函数,则应将其附加。任何帮助将不胜感激。
您应该将Foo::str1
声明为std::string
。另外,Foo::appendFoo()
的参数应为Foo&
类型,因此函数中的foo1
将不是临时副本。
#include <string>
class Foo
{
std::string str1;
Foo()
{
str1 = "";
}
void appendFoo(Foo &foo1)
{
foo1.str1.append("Hello");
}
}
但是,更好的设计可能是使Foo::appendFoo()
附加到对象本身上的字符串。也就是说,
void appendFoo()
{
str1.append("Hello");
}
// Calling example
Foo bar;
bar.appendFoo();
// Now bar.str1 == "Hello"
解决方案取决于数据成员str1的类型。如果它的类型是std :: string,那么就没有问题
class Foo
{
private:
std::string str1;
public:
Foo() = default;
void appendFoo()
{
str1.append( "Hello" );
}
};
如果数据成员str1应像您的原始代码一样具有类型char *,那么解决方案更复合。
class Foo
{
private:
char *str1;
public:
Foo() : str1( nullptr ) {}
~Foo() { delete []str1; }
void appendFoo()
{
const char hello[] = "Hello";
char *tmp = new char[ std::strlen( str1 ) + sizeof( hello ) ];
std::strcpy( tmp, str1 );
std::strcat( tmp, hello );
delete []str1;
str1 = tmp;
}
};
您还需要正确定义此类的复制构造台和复制分配运算符。
相关文章:
- 查找后更改类变量
- 如何避免在仅标头库中C++类/变量重定义
- c++ 在非类函数中使用类变量
- 基于模板的类变量
- 为什么我的子类不继承父类的字符串?
- 分段 访问私有类变量时出错
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 模板类变量作为非模板类的成员
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 如何在构造函数中访问类变量以分配它们,而无需在C++中使用此指针
- 类变量无法从类方法访问
- 指针作为类变量 Qt
- 为什么线程对类变量所做的更改没有影响?
- memcpy() 在一个类中被调用以复制到另一个类变量中后会引发异常
- C++:使用基类中的仅派生类变量
- 将字符串附加到C 中的类变量
- 显示类变量.在 printf 函数中使用字符串作为参数
- 将字符串从托管Listbox拉到char*类型的类变量中
- 将字符串求值为类变量