我正在尝试构建一个向量,并且向量中的每个char *应该是不同的。这是代码:
static char *StatsManager::_statsOption[4] = {"min", "max", "mean", "stddev"};
void BuildStatsNameList(long ChanIdx)
{
for (int m = 0; m < 4; m++)
{
std::string statsName(StatsManager::_statsOption[m]);
for (int n = 0; n < 1; n++)
{
statsName += "_";
statsName += std::to_string(ChanIdx);
statsName += "_";
statsName += std::to_string(n);
//sprintf (statsName, "s%_%d_%d", StatsManager::_statsOption[m],ChanIdx, n);
StatsManager::_statsNameList.push_back((char*)statsName.c_str());
}
}
}
但是,我注意到
char*
中的statsName
(statsName
)最终将变得相同。例如,循环后,
StatsManager::_statsNameList
变为stddev_1_0
stddev_1_0
stddev_1_0
stddev_1_0
......
相反,我想要它
min_1_0
max_1_0
mean_1_0
stddev_1_0
任何人都知道如何避免
statsName
一次又一次地被覆盖?谢谢。 最佳答案
如果要保留C样式的字符串,一种选择是使用strdup
。
StatsManager::_statsNameList.push_back(strdup(statsName.c_str()));
但是请注意,使用完这些字符串后,您将需要自己
free
内存。关于c++ - 建立char *的 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25775261/