我正在研究我的C ++类中的一些指针练习,并且已经陷入了解决问题的工作,比如我有一个这样的类:
class foo
{
public:
foo(char *inputWord = ""); // Default parameter constructor
private:
char * word;
int wordSize; // length of word
};
主要是我:
int main()
{
foo baz("t");
foo bar("test");
return 0;
}
如何为此构造函数创建实现?
<小时/> 到目前为止,我知道要初始化wordSize我可以这样做:
foo::foo()
{
wordSize = strlen(inputWord);
}
但我不明白如何初始化char *字。 我尝试了以下内容:
的strcpy(字,strlen的);
for(int i = 0; i&lt; wordSize; i ++) word [i] = inputWord [i];
int count = 0; while(count&lt; wordSize + 1) { inputWord = word; inputWord ++; }
以上方法均无效。我甚至尝试使用memcpy()
和memmove()
,但我只是陷入困境。
之前是否有人处理此问题并指出我的方向正确?
答案 0 :(得分:2)
您可以在分配内存后立即使用strcpy
:
Foo(char *inputWord) {
if (inputWord==nullptr) { // manage null pointer
wordSize=0;
word=nullptr;
return;
}
wordSize = strlen(inputWord); // store string length
word = new char[wordSize+1]; // allocate enough memory to store the original C-style string
strcpy(word,inputWord); // copy the original into destination
}
这是C风格,但你最好在C ++中使用string
:
class Foo {
private:
string word;
public:
Foo(const string &input) : word(input) {} // initialize word with inputWord (let C++ string type do all the tricky parts)
};
C ++ string
类型能够正确管理(de)分配,长度等。