TP5产生Array to string conversion错误的排除

本文详细解析了在PHP中常见的“Arraytostringconversion”错误,阐述了错误产生的原因及如何正确输出数组的方法,同时提到了在数据库配置中避免该错误的技巧。

在代码测试时,程序产生错误“Array to string conversion”,而指出错误的第341行是这句: echo $data;而data确实是个数组。在这里插入图片描述
**错误原因:**数组不能用echo输出。
**解决办法:**print_r() 来输出数组,或者var_dump() 来输出变量的相关信息。
用print_r输出结果:
在这里插入图片描述
用var_dump() 输出结果:
在这里插入图片描述
两者的差别在于,print_r() 来输出数组,而var_dump() 则输出变量的内容与结构,以及类型等信息。var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
而网友benben0729在《Array to string conversion TP框架》中还说到一种情况:在database.php配置项中使用datavase=>[]写数据库配置项也会造成“Array to string conversion”错误,这种情况下不应该加datavase=>[],直接写数据库配置项即可。(文章见:https://blog.youkuaiyun.com/benben0729/article/details/81224918)

你刚刚写的程序有一堆报错 /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:89:21: error: too few arguments to function ‘json_array’ ctx.openPools = json_array(); ^~~~~~~~~~ [ 43%] Building C object CMakeFiles/cpnuilib.dir/uilibNat.c.o In file included from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpObj.h:22:0, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpNotify.h:23, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:28: /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/generalLib/gpl/parson.h:493:17: note: declared here JSON_Array * json_array (const JSON_Value *value); ^~~~~~~~~~ /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:92:46: error: ‘_manualBindCliOutputHandler’ undeclared (first use in this function) ret = uiDhcpServerGetManualBindAll(&ctx, _manualBindCliOutputHandler); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:92:46: note: each undeclared identifier is reported only once for each function it appears in /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:107:25: error: implicit declaration of function ‘json_array_get_wrapping_value’; did you mean ‘json_array_append_value’? [-Werror=implicit-function-declaration] json_value_free(json_array_get_wrapping_value(ctx.openPools)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ json_array_append_value /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:107:25: error: passing argument 1 of ‘json_value_free’ makes pointer from integer without a cast [-Werror=int-conversion] In file included from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpObj.h:22:0, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpNotify.h:23, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:28: /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/generalLib/gpl/parson.h:481:14: note: expected ‘JSON_Value * {aka struct json_value_t *}’ but argument is of type ‘int’ void json_value_free (JSON_Value *value); ^~~~~~~~~~~~~~~ /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c: In function ‘_manualBindCliOutputHandler’: /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:120:67: error: macro "APPL_ENSURE_RET" passed 2 arguments, but takes just 1 APPL_ENSURE_RET(NULL != data && NULL != context, ERR_BAD_PARAM); ^ /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:120:5: error: ‘APPL_ENSURE_RET’ undeclared (first use in this function); did you mean ‘APPL_ERRCODE’? APPL_ENSURE_RET(NULL != data && NULL != context, ERR_BAD_PARAM); ^~~~~~~~~~~~~~~ APPL_ERRCODE /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:140:44: error: passing argument 1 of ‘json_string’ from incompatible pointer type [-Werror=incompatible-pointer-types] const char *poolName = json_string(json_array_get_string(ctx->openPools, i)); ^~~~~~~~~~~~~~~~~~~~~ In file included from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpObj.h:22:0, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/platform/midware/tpNotify.h:23, from /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:28: /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/../fep/host/header/generalLib/gpl/parson.h:494:17: note: expected ‘const JSON_Value * {aka const struct json_value_t *}’ but argument is of type ‘const char *’ const char * json_string (const JSON_Value *value); ^~~~~~~~~~~ /mydisk/platform/buildroot/build/armv8/build/tplink/uilib-1.0/uilibDhcpServerCpn.c:166:9: error: implicit declaration of function ‘escape_dhcp_string’ [-Werror=implicit-function-declaration] escape_dhcp_string(bind->cidStr, escapedCid, sizeof(escapedCid)); ^~~~~~~~~~~~~~~~~~ static APPL_ERRCODE _addressreservation_cli_collectGlobal(TPCONFIG_COLLECTFUN_INPUT_T *pInput) { APPL_ERRCODE ret = ERR_NO_ERROR; DBG_ALZ("Starting DHCP static binding configuration collection"); // 1. 创建收集上下文 CliConfigContext ctx = {0}; ctx.pInput = pInput; ctx.openPools = json_array(); // 2. 直接使用页面函数获取数据 ret = uiDhcpServerGetManualBindAll(&ctx, _manualBindCliOutputHandler); if (ret != ERR_NO_ERROR) { DBG_ALZ("uiDhcpServerGetManualBindAll failed: %d", ret); goto cleanup; } // 3. 关闭所有打开的池 size_t poolCount = json_array_get_count(ctx.openPools); for (size_t i = 0; i < poolCount; i++) { tpConfig_outputToSdsForCli(pInput->regionId, 0, "exit", TPCONFIG_HEADSPACE_YES); } cleanup: // 4. 清理资源 if (ctx.openPools) { json_value_free(json_array_get_wrapping_value(ctx.openPools)); } return ret; } /** * @description: CLI配置输出处理函数(与页面使用相同数据源) * @param {void*} data 静态绑定数据 * @param {void*} context 收集上下文 * @return {int} 处理结果 */ static int _manualBindCliOutputHandler(void *data, void *context) { APPL_ENSURE_RET(NULL != data && NULL != context, ERR_BAD_PARAM); CliConfigContext *ctx = (CliConfigContext *)context; TPCONFIG_COLLECTFUN_INPUT_T *pInput = ctx->pInput; MANUAL_BINDING *bind = (MANUAL_BINDING *)data; // 1. 跳过无效绑定 if (0 != strlen(bind->vrfName)) { return ERR_NO_ERROR; // 跳过VRF绑定 } // 2. 转换IP地址(与页面函数相同) struct in_addr tmpAddr = {.s_addr = ntohl(bind->ip.s_addr)}; char ipStr[IP_ADDRESS_LENGTH] = {0}; inet_ntop(AF_INET, &tmpAddr, ipStr, sizeof(ipStr)); // 3. 检查是否需要打开新池 int isNewPool = 1; size_t poolCount = json_array_get_count(ctx->openPools); for (size_t i = 0; i < poolCount; i++) { const char *poolName = json_string(json_array_get_string(ctx->openPools, i)); if (strcmp(poolName, bind->poolName) == 0) { isNewPool = 0; break; } } // 4. 打开新池(如果需要) if (isNewPool) { char poolCmd[128] = {0}; snprintf(poolCmd, sizeof(poolCmd), "ip dhcp server pool \"%s\"", bind->poolName); tpConfig_outputToSdsForCli(pInput->regionId, 0, poolCmd, TPCONFIG_HEADSPACE_YES); // 记录已打开的池 json_array_append_string(ctx->openPools, bind->poolName); } // 5. 生成绑定命令(与页面显示逻辑一致) char bindCmd[256] = {0}; if (bind->bindType == ETHERNET_BIND || bind->bindType == IEEE802_BIND) { snprintf(bindCmd, sizeof(bindCmd), "address %s hardware-address %s %s", ipStr, bind->macStr, (bind->bindType == ETHERNET_BIND) ? "ethernet" : "ieee802"); } else if (bind->bindType == CLIENT_ID_ASCII || bind->bindType == CLIENT_ID_HEX) { char escapedCid[256] = {0}; escape_dhcp_string(bind->cidStr, escapedCid, sizeof(escapedCid)); snprintf(bindCmd, sizeof(bindCmd), "address %s client-identifier %s\"%s\"", ipStr, (bind->bindType == CLIENT_ID_ASCII) ? "ascii " : "", escapedCid); } // 6. 输出绑定命令 if (strlen(bindCmd) > 0) { tpConfig_outputToSdsForCli(pInput->regionId, 0, bindCmd, TPCONFIG_HEADSPACE_YES); } // 7. 输出描述(如果有,与页面显示一致) if (strlen(bind->description) > 0) { char descCmd[256] = {0}; snprintf(descCmd, sizeof(descCmd), "description \"%s\"", bind->description); tpConfig_outputToSdsForCli(pInput->regionId, 0, descCmd, TPCONFIG_HEADSPACE_YES); } return ERR_NO_ERROR; }
最新发布
12-02
/tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c: In function 'int main()': /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:17:26: error: no matching function for call to 'size(int [(<anonymous> + 1)])' 17 | for(int i=1;i<=size(a);i++) | ^ In file included from /usr/include/c++/9/string:54, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/range_access.h:242:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)' 242 | size(const _Container& __cont) noexcept(noexcept(__cont.size())) | ^~~~ /usr/include/c++/9/bits/range_access.h:242:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:17:26: note: variable-sized array type 'int [(<anonymous> + 1)]' is not a valid template argument 17 | for(int i=1;i<=size(a);i++) | ^ In file included from /usr/include/c++/9/string:54, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/range_access.h:252:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])' 252 | size(const _Tp (&/*__array*/)[_Nm]) noexcept | ^~~~ /usr/include/c++/9/bits/range_access.h:252:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:17:26: note: variable-sized array type 'long int' is not a valid template argument 17 | for(int i=1;i<=size(a);i++) | ^ /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:13: error: no match for 'operator>>' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'int') 19 | cout>>a[i]; | ~~~~^~~~~~ | | | | | int | std::ostream {aka std::basic_ostream<char>} /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:13: note: candidate: 'operator>>(int, int)' <built-in> 19 | cout>>a[i]; | ~~~~^~~~~~ /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:13: note: no known conversion for argument 1 from 'std::ostream' {aka 'std::basic_ostream<char>'} to 'int' In file included from /usr/include/c++/9/string:56, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/basic_string.tcc:1466:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)' 1466 | operator>>(basic_istream<_CharT, _Traits>& __in, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.tcc:1466:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/istream:991, from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/istream.tcc:931:5: note: candidate: 'template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)' 931 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) | ^~~~~~~~ /usr/include/c++/9/bits/istream.tcc:931:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:756:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)' 756 | operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) | ^~~~~~~~ /usr/include/c++/9/istream:756:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:761:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)' 761 | operator>>(basic_istream<char, _Traits>& __in, signed char& __c) | ^~~~~~~~ /usr/include/c++/9/istream:761:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/istream:991, from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/istream.tcc:963:5: note: candidate: 'template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)' 963 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) | ^~~~~~~~ /usr/include/c++/9/bits/istream.tcc:963:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:803:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)' 803 | operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) | ^~~~~~~~ /usr/include/c++/9/istream:803:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:808:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)' 808 | operator>>(basic_istream<char, _Traits>& __in, signed char* __s) | ^~~~~~~~ /usr/include/c++/9/istream:808:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 19 | cout>>a[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:980:5: note: candidate: 'template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&)' 980 | operator>>(_Istream&& __is, _Tp&& __x) | ^~~~~~~~ /usr/include/c++/9/istream:980:5: note: template argument deduction/substitution failed: /usr/include/c++/9/istream: In substitution of 'template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_ostream<char>&; _Tp = int&]': /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:19:18: required from here /usr/include/c++/9/istream:980:5: error: no type named 'type' in 'struct std::enable_if<false, void>' /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:21:30: error: no matching function for call to 'size(int [(<anonymous> + 1)])' 21 | for(int i=1;i<=size(b);i++) | ^ In file included from /usr/include/c++/9/string:54, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/range_access.h:242:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)' 242 | size(const _Container& __cont) noexcept(noexcept(__cont.size())) | ^~~~ /usr/include/c++/9/bits/range_access.h:242:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:21:30: note: variable-sized array type 'int [(<anonymous> + 1)]' is not a valid template argument 21 | for(int i=1;i<=size(b);i++) | ^ In file included from /usr/include/c++/9/string:54, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/range_access.h:252:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])' 252 | size(const _Tp (&/*__array*/)[_Nm]) noexcept | ^~~~ /usr/include/c++/9/bits/range_access.h:252:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:21:30: note: variable-sized array type 'long int' is not a valid template argument 21 | for(int i=1;i<=size(b);i++) | ^ /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:13: error: no match for 'operator>>' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'int') 23 | cout>>b[i]; | ~~~~^~~~~~ | | | | | int | std::ostream {aka std::basic_ostream<char>} /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:13: note: candidate: 'operator>>(int, int)' <built-in> 23 | cout>>b[i]; | ~~~~^~~~~~ /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:13: note: no known conversion for argument 1 from 'std::ostream' {aka 'std::basic_ostream<char>'} to 'int' In file included from /usr/include/c++/9/string:56, from /usr/include/c++/9/bits/locale_classes.h:40, from /usr/include/c++/9/bits/ios_base.h:41, from /usr/include/c++/9/ios:42, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/basic_string.tcc:1466:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)' 1466 | operator>>(basic_istream<_CharT, _Traits>& __in, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.tcc:1466:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/istream:991, from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/istream.tcc:931:5: note: candidate: 'template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)' 931 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) | ^~~~~~~~ /usr/include/c++/9/bits/istream.tcc:931:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:756:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)' 756 | operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) | ^~~~~~~~ /usr/include/c++/9/istream:756:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:761:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)' 761 | operator>>(basic_istream<char, _Traits>& __in, signed char& __c) | ^~~~~~~~ /usr/include/c++/9/istream:761:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/istream:991, from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/bits/istream.tcc:963:5: note: candidate: 'template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)' 963 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) | ^~~~~~~~ /usr/include/c++/9/bits/istream.tcc:963:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<_CharT, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:803:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)' 803 | operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) | ^~~~~~~~ /usr/include/c++/9/istream:803:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:808:5: note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)' 808 | operator>>(basic_istream<char, _Traits>& __in, signed char* __s) | ^~~~~~~~ /usr/include/c++/9/istream:808:5: note: template argument deduction/substitution failed: /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: note: 'std::ostream' {aka 'std::basic_ostream<char>'} is not derived from 'std::basic_istream<char, _Traits>' 23 | cout>>b[i]; | ^ In file included from /usr/include/c++/9/iostream:40, from /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:1: /usr/include/c++/9/istream:980:5: note: candidate: 'template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&)' 980 | operator>>(_Istream&& __is, _Tp&& __x) | ^~~~~~~~ /usr/include/c++/9/istream:980:5: note: template argument deduction/substitution failed: /usr/include/c++/9/istream: In substitution of 'template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_ostream<char>&; _Tp = int&]': /tmp/cca6ccd2a78d4e09be0558c2ecdbdc5a/main.c:23:18: required from here /usr/include/c++/9/istream:980:5: error: no type named 'type' in 'struct std::enable_if<false, void>'
07-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值