벡터를 만들려고하는데 아마도 벡터 내의 각 char *가 다릅니다.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
를 방지 할 수있는 어떤 생각을 가지고 그것으로 사용할하게 몇 번이고 다시 덮어 쓴거야? 감사.
왜'std :: string' 대신'char *'입니까? – clcto
함수를 떠나는 순간 무효화되는 포인터를 저장하기 때문에 정의되지 않은 동작이 발생합니다. 왜 문자열을 벡터에 직접 저장하지 않습니까? – juanchopanza
반대편의 인터페이스는 char *입니다. – Ono