从';尺寸';至';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平台上,我得到以下警告: 警告C4267:“参数”:从从';尺寸';至';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() ); },c++,c++11,type-conversion,size-t,rapidjson,C++,C++11,Type Conversion,Size T,Rapidjson,在编译时,在x64平台上,我得到以下警告: 警告C4267:“参数”:从size\t转换为 rapidjson::SizeType,可能会丢失数据 如何将字符串的长度(size\t)正确转换为rapidjson SizeType 如何将字符串的长度(size\t)正确转换为rapidjson SizeType 您已经使用的隐式转换是从size\u t转换为rapidjson::SizeType的正确方法 警告并不一定意味着您的程序不正确 在这种情况下,它只是警告说,rapidjson::Size
size\t
转换为
rapidjson::SizeType
,可能会丢失数据
如何将字符串的长度(size\t
)正确转换为rapidjson SizeType
如何将字符串的长度(size\t
)正确转换为rapidjson SizeType
您已经使用的隐式转换是从size\u t
转换为rapidjson::SizeType
的正确方法
警告并不一定意味着您的程序不正确
在这种情况下,它只是警告说,rapidjson::SizeType
不能表示由size\u t
表示的所有值。因此,如果您试图使用比rapidjson::SizeType
所能表示的更长的字符串,您将获得意外的行为
如果确实希望支持此类字符串,则必须重写另一个答案中文档中描述的rapidjson::SizeType
我能摆脱这个警告吗
显式强制转换通常会使编译器确信您不是偶然转换的:静态强制转换(source.length())
:
RapidJSON即使在64位平台上也使用32位数组/字符串索引,
而不是使用size\u t
。用户可以通过定义
我知道警告不是一个错误,但是我能摆脱这个警告吗?是的,StistaCype是一个解决方案,但是我认为RAPIDJSON文档定义RAPIDJSONNY NoSsieType定义更优雅。谢谢您的回答。请记住,实际使用如此长的字符串将使xml在32位系统上不可解析。