从 'size_t' 转换为 'rapidjson::SizeType'
conversion from 'size_t' to 'rapidjson::SizeType'
我有这个 C++ 示例代码:
void test()
{
rapidjson::Document doc;
doc.SetObject();
const std::string source = "The quick brown fox jumps over the lazy dog";
rapidjson::Value source_val;
source_val.SetString( source.c_str(), source.length(), doc.GetAllocator() );
}
并且在编译时,在 x64 平台上,我收到此警告:
warning C4267: 'argument': conversion from size_t
to
rapidjson::SizeType
, possible loss of data
如何正确地将字符串的长度 (size_t
) 转换为 rapidjson SizeType?
How can I correctly convert from a string's length (size_t
) to rapidjson SizeType?
您已经使用的隐式转换是从 size_t
转换为 rapidjson::SizeType
的正确方法。
警告并不一定意味着您的程序不正确。
在这种情况下,它只是警告说 rapidjson::SizeType
不能表示 size_t
可以表示的所有值。因此,如果您尝试使用比 rapidjson::SizeType
可以表示的字符串更长的字符串,您将得到意想不到的行为。
如果您确实想支持此类字符串,则必须按照其他答案中的文档所述覆盖 rapidjson::SizeType
。
can I get rid of this warning?
显式强制转换通常会让编译器相信您没有意外转换:static_cast<rapidjson::SizeType>(source.length())
RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
instead of using size_t
. Users may override the SizeType by defining
RAPIDJSON_NO_SIZETYPEDEFINE.
我有这个 C++ 示例代码:
void test()
{
rapidjson::Document doc;
doc.SetObject();
const std::string source = "The quick brown fox jumps over the lazy dog";
rapidjson::Value source_val;
source_val.SetString( source.c_str(), source.length(), doc.GetAllocator() );
}
并且在编译时,在 x64 平台上,我收到此警告:
warning C4267: 'argument': conversion from
size_t
torapidjson::SizeType
, possible loss of data
如何正确地将字符串的长度 (size_t
) 转换为 rapidjson SizeType?
How can I correctly convert from a string's length (
size_t
) to rapidjson SizeType?
您已经使用的隐式转换是从 size_t
转换为 rapidjson::SizeType
的正确方法。
警告并不一定意味着您的程序不正确。
在这种情况下,它只是警告说 rapidjson::SizeType
不能表示 size_t
可以表示的所有值。因此,如果您尝试使用比 rapidjson::SizeType
可以表示的字符串更长的字符串,您将得到意想不到的行为。
如果您确实想支持此类字符串,则必须按照其他答案中的文档所述覆盖 rapidjson::SizeType
。
can I get rid of this warning?
显式强制转换通常会让编译器相信您没有意外转换:static_cast<rapidjson::SizeType>(source.length())
RapidJSON uses 32-bit array/string indices even on 64-bit platforms, instead of using
size_t
. Users may override the SizeType by defining RAPIDJSON_NO_SIZETYPEDEFINE.