C ++变量转换

时间:2009-10-29 16:42:43

标签: c++

我需要将一个参数传递给write()函数。它要求一种'const void *'我是一个PHP人,并且不太了解C ++。

这是我的参数:

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

我不知道有任何其他方式来吸引那个领域。我很乐意宣布它为const void *但我不知道如何。

我想只是转换它会比试图以正确的方式拉动它更容易吗?

错误消息:无法将const fmx :: Text转换为const void * for argument 2

write(fd, distance, 4);

我知道这有效,所以我可以转换吗?

const void* s = "5000";

这是FileMaker中的一个插件,所以我在这里并没有真正得到c ++。

是否有更多人需要帮助我解决这个问题?

非常感谢!

3 个答案:

答案 0 :(得分:2)

如果fmx :: Text是指针类型,编译器会自动将对它的引用转换为void*。您需要使用address-of运算符为函数指定一个使用的指针:

write(fd, &distance, 4);

答案 1 :(得分:1)

我真的不知道filemaker,但是this link表明fmx :: Text有一个GetBytes函数。然后,您可以将指针传递给填充此函数的缓冲区。

答案 2 :(得分:0)

我假设你真的想要文本字符串。

我认为您需要检查api for fmx :: Text以获取所需的字符串。 Here是我发现的字符串。

看起来类型将数据存储为UTF16,因此您必须运行一些代码来获取字符串,然后将其传递给您的写函数:

//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;
}

然后调用函数

std::string myString = getString(distance);
write(fd, myString.c_str(), myString.size());

注意我在这里假设很多...你想要当前编码中的字符串,而不是'distance'中的原始UTF16数据。并且GetBytes不会破坏缓冲区中的空字符....

您还需要包含< string>在你的c ++文件中。