거래 도구 (MultiCharts) 용 유틸리티 DLL을 개발 중입니다. 도구를 사용하려면 라이브러리를 C++로 빌드해야합니다. 내 문제는 형식의 다차원 배열을 반환 할 수있는 메서드를 작성해야합니다 : char*
. 문자열이 아닌 char*
을 사용하는 이유는 도구가 문자열 데이터 유형과 호환되지 않기 때문입니다. 따라서 char*
(호환 됨)을 사용해야합니다.다차원 char * 배열 반환
나는 조금 연구를했으며 일부 코드 단편을 발견했지만 아무 것도 나를 위해 일하는 것 같지 않습니다.
char ***signals = new char**[1024];
for (int i=0; i<data.size(); i++)
{
signals[i] = new char*[8];
for (int j=0; j<8; j++)
{
string instance;
char* result;
instance = data[i][j];
result = new char[instance.size() + 1];
result[instance.size()] = 0;
memcpy(result, instance.c_str(), instance.size());
signals[i][j] = result;
}
}
위의 스 니펫은 제대로 작동하지 않으며 가비지 값만 저장됩니다. 콘솔 응용 프로그램으로 실행했습니다. 전체 행 = 1024 8 열 (시스템의 요구)를 생성 할 수
데이터 구조 : 여기 디버깅 정보의 스크린 샷이다. 데이터은 도구로 전송해야하는 값을 가진 벡터입니다.
누구나 아이디어를 얻을 수 있습니까?
C++에서'char ***'을 반환하지 마십시오. 'vector>'을 반환하십시오. –
릴리스 모드에서 저장된 char 값은 어디에서 디버깅 했습니까? –
@ H2CO3 귀하의 의견에 감사드립니다. 앞서 언급했듯이 문자열 데이터 유형을 반환하지 못하도록하는이 제약이 있습니다. 그래서 char * 사용할 필요가있다. –