C++字符串连接错误:无法将自定义类型与字符串直接相加
C++字符串连接错误:无法将自定义类型与字符串直接相加
在 C++ 编程中,将字符串与其他数据类型连接是常见的操作。然而,当你尝试将自定义结构体或类类型直接与字符串连接时,编译器会抛出一个错误。
**错误示例:**cppstd::string check_process_cmd = 'pgrep ' + cpu_info_.auto_ad_memory_monitor;// ...
错误信息:
error: no match for ‘operator+’ (operand types are ‘const char [7]’ and ‘...’)
错误原因:
C++ 编译器无法隐式地将自定义类型转换为字符串。+ 运算符期望两个操作数都是字符串类型,或者其中一个操作数可以隐式转换为字符串类型。
解决方案:
使用 std::to_string() 函数将自定义类型的值转换为字符串,然后再与其他字符串进行连接。
**修正后的代码:**cppstd::string check_process_cmd = 'pgrep ' + std::to_string(cpu_info_.auto_ad_memory_monitor.process_id);int process_id = system(check_process_cmd.c_str());if (process_id == 0){ cpu_info_.auto_ad_memory_monitor.cpu.data = 0; cpu_info_.auto_ad_memory_monitor.mem.data = 0; cpu_info_.auto_ad_memory_monitor.vsz.data = 0;}
代码解释:
std::to_string(cpu_info_.auto_ad_memory_monitor.process_id):将cpu_info_.auto_ad_memory_monitor.process_id的值转换为字符串。2.'pgrep ' + ...:将转换后的字符串与 'pgrep ' 连接起来。
总结:
在 C++ 中连接字符串时,请确保所有操作数都是字符串类型或可以隐式转换为字符串类型的。如果需要连接自定义类型,请使用 std::to_string() 函数将其转换为字符串。
原文地址: https://www.cveoy.top/t/topic/j79 著作权归作者所有。请勿转载和采集!