gpt4 book ai didi

c++ - 初始化字符数组有问题

转载 作者:太空狗 更新时间:2023-10-29 22:53:14 27 4
gpt4 key购买 nike

好吧,这是关于哈希表的家庭作业,但这是我认为我在早期类(class)中能够做的简单的事情,我正在撕毁我的头发。教授 react 不够快,所以我想我会在这里试试。

我们有一个股票对象的哈希表。股票对象是这样创建的:

stock("IBM", "International Business Machines", 2573, date(date::MAY, 23, 1967))

我的构造函数看起来像:

stock::stock(char const * const symbol, char const * const name, int sharePrice, date priceDate): m_symbol(NULL), m_name(NULL), sharePrice(sharePrice), dateOfPrice(priceDate)
{
setSymbol(symbol);
setName(name);
}

setSymbol 看起来像这样:(setName 是相同的):

void stock::setSymbol(const char* symbol)  
{
if (m_symbol)
delete [] m_symbol;
m_symbol = new char[strlen(symbol)+1];
strcpy(m_symbol,symbol);
}

它拒绝在线分配

m_symbol = new char[strlen(symbol)+1];

带有 std::bad_alloc。声明名称和符号

char * m_name;  
char * m_symbol;

肯定是strlen()误入歧途了。而且它似乎并不是每次都会发生。

cout << symbol << strlen(symbol); 

正确返回 IBM,然后崩溃

最佳答案

因为这是标记为 C++ 的,您可以使用 std::string 而不是自己在 char* 上进行所有指针维护吗?

std::string name;
std::string symbol

然后 setSymbol 就变得简单了:

void stock::setSymbol(const char* symbol)  
{
this->symbol = symbol;
}

关于c++ - 初始化字符数组有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com