Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SQLite C/C++;无符号字符*_C++_C_Api_Sqlite_Char - Fatal编程技术网

C++ SQLite C/C++;无符号字符*

C++ SQLite C/C++;无符号字符*,c++,c,api,sqlite,char,C++,C,Api,Sqlite,Char,为什么SQLite C/C++API返回文本值的无符号字符*s而不是事实上的char*类型 这在某种程度上与问题有关,除了SQLite API的决定似乎与传统的char*字符串值建议相反 例如: const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); 粗略地猜测,我会说它与支持UTF-8编码有关。有符号字符值仅在7位ASCII环境中才有意义,其中0x7f以上的所有内容都可以解释。在UTF-8中,0x00和0xFF之间

为什么SQLite C/C++API返回文本值的
无符号字符*
s而不是事实上的
char*
类型

这在某种程度上与问题有关,除了SQLite API的决定似乎与传统的
char*
字符串值建议相反

例如:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

粗略地猜测,我会说它与支持UTF-8编码有关。有符号字符值仅在7位ASCII环境中才有意义,其中0x7f以上的所有内容都可以解释。在UTF-8中,0x00和0xFF之间的所有内容都可以同等使用。

来自:

(H13821)sqlite3_column_text(S,N)接口将准备语句S的结果集当前行中的第N列转换为以零结尾的UTF-8字符串,并返回指向该字符串的指针


UTF-8需要从0x00到0xFF的字节值。字符的范围可以是-0x80到0x7F(有符号)或0x00到0xFF(无符号)。强制使用unsigned可以正确编码UTF-8字符串。

真的吗?您能否提供示例文档来说明未签名字符*的用法?@strager:添加到问题中。我也得出了这个结论(sans research)。我也得出了这个结论(/with/research;参见我的答案)。是的,这就是为什么我对您的答案投了赞成票。我确实去寻找证据,但就是没有时间。