繁体   English   中英

C ++变量转换

[英]C++ Variable Conversion

我需要将参数之一传递给write()函数。 它要求一种'const void *'的类型。我是PHP专家,不太熟悉C ++。

这是我的参数:

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

我不知道有什么其他方法可以涉足这一领域。 我只想声明它为const void *,但我不知道如何。

我想只是转换它比尝试以正确的方式将其容易??

错误消息:无法将参数2的const fmx :: Text转换为const void *

write(fd, distance, 4);

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

const void* s = "5000";

这是FileMaker中的一个插件,因此我在这里并没有真正使用c ++。

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

非常感谢!

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

write(fd, &distance, 4);

我不是很了解filemaker,但是此链接显示fmx :: Text具有GetBytes函数。 然后,您可以将指针传递到填充有此函数的缓冲区。

我假设您实际上需要文本字符串。

我认为您需要检查API的fmx :: Text以获取所需的字符串。 我发现是将字符串取出的东西。

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

//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不会破坏缓冲区中的空字符。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM