2009-10-29 4 views
0

내 매개 변수 중 하나를 write() 함수에 전달해야합니다. 'const void *'유형을 요구하고 있습니다. 저는 PHP 사용자이고 C++을 잘 모릅니다. 내가 그 분야에서 뽑아 다른 방법을 모르는C++ 변수 변환

const fmx::Text& distance = dataVect.AtAsText(3); 

:

여기 내 매개 변수입니다. const void * 선언하는 것을 좋아하지만 어떻게해야할지 모르겠다.

나는 그것을 바꿔 올바른 방법으로 끌어 오기보다 쉽습니다.

오류 메시지 :이 난 그냥 변환 할 수 있도록 일을 알고

write(fd, distance, 4); 

인수 2 const를 무효 *에 const를 FMX : 텍스트를 변환 할 수 없습니다?

const void* s = "5000"; 

이것은 FileMaker의 플러그인 용이므로 실제로 여기서는 C++을 얻지 못합니다.

더 많은 사람이이 문제를 해결하는 데 도움이 필요합니까 ??

감사합니다.

답변

1

저는 filemaker를 모르지만, this link은 fmx :: Text에 GetBytes 기능이 있음을 보여줍니다. 그런 다음이 함수로 채워진 버퍼에 포인터를 전달할 수 있습니다.

2

fmx :: Text가 포인터 유형 인 경우 컴파일러는 자동으로 참조를 void*으로 변환합니다. 함수에 포인터를 사용하려면 주소 연산자를 사용해야합니다.

write(fd, &distance, 4); 
0

실제로 텍스트 문자열을 원한다고 가정합니다.

원하는 문자열을 얻으려면 fmx :: Text에 대한 api를 확인해야한다고 생각합니다. Here은 문자열을 가져 오는 것으로 밝혀졌습니다.

//a function to convert to a normal string 
std::string getString(fmx::Text& Text) 
{ 
    char buffer[512] = {0}; //NOTE YOU HAVE A STRING SIZE LIMIT 

    // convert original text to ASCII text 
    outText.GetBytes(buffer, sizeof(buffer)-1, 0, Text.GetSize(), fmx::Text::kEncoding_Native);  

    return buffer; 
} 

가 그런 기능

를 호출

는 문자열을 얻기 위해 코드의 비트를 실행해야하므로, 다음 write 함수에 전달, 유형 저장과 같은 UTF16으로 데이터를 보이는
std::string myString = getString(distance); 
write(fd, myString.c_str(), myString.size()); 

참고 여기에 많은 내용이 포함되어 있다고 가정합니다. 현재 인코딩에서 문자열을 원하고 '거리'에서 원시 UTF16 데이터를 필요로하지 않습니다. GetBytes가 버퍼의 널 문자를 조작하지 않을 것입니다.

또한 을 C++ 파일에 포함시켜야합니다.