从';尺寸';至';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() ); }

从';尺寸';至';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

在编译时,在x64平台上,我得到以下警告:

警告C4267:“参数”:从
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位系统上不可解析。