--- title: "StringUtils - String Manipulation Utilities" description: "A utility class for string manipulation and type conversion for ESP-32 applications" keywords: "ESP-32, C++17, string utilities, type conversion, industrial application, Modbus" --- ## StringUtils **Path**: [`src/modbus/StringUtils.h`](../src/modbus/StringUtils.h) **Revision History**: Initial documentation StringUtils provides a set of utility functions for string manipulation and type conversion in an industrial ESP-32 application. It enables parsing and converting string values to native C types, which is particularly useful for configuration and communication scenarios in Modbus applications. ## REQUIREMENTS No specific hardware pins are required as this is a software utility helper. ## PROVIDES - `E_VALUE_TYPE` enumeration for representing different value types - Template function `convertTo` for converting strings to various native types - Type detection functions (`isInteger`, `isFloat`, `detectType`) - Hex data printing utility ## FEATURES - Specialized template implementations for converting strings to: - Integer types (`int`, `short`, `long int`) - Floating-point (`float`) - Boolean values (`bool`) - Type detection to determine if a string represents a valid integer or floating-point value - Platform-specific adaptations for string tokenization across different compilers - Hex data visualization for debugging ## DEPENDENCIES - [`./xtypes.h`](../src/modbus/xtypes.h) - Standard C libraries: ``, ``, ``, `` ```mermaid graph TD StringUtils --> xtypes StringUtils --> "Standard C Libraries" ``` ## BEHAVIOUR The StringUtils component follows a simple conversion and detection workflow: ```mermaid graph LR Input[Input String] --> Detect[Detect Type] Detect --> |Integer| ConvertInt[Convert to Integer] Detect --> |Float| ConvertFloat[Convert to Float] Detect --> |Boolean| ConvertBool[Convert to Boolean] Detect --> |Text| HandleText[Handle as String] ConvertInt --> Result[Native Type Result] ConvertFloat --> Result ConvertBool --> Result HandleText --> Result ``` ## TODOS ### PERFORMANCE - Consider using `strtol`, `strtof`, etc. for all conversions to provide better error handling - Optimize the string scanning operations for large strings - Add string length validation to avoid buffer overruns ### SECURITY - Add input validation to prevent exploitation through malformed strings - Consider adding bounds checking for numeric conversions - Implement sanitization for strings that will be used in sensitive contexts ### COMPLIANCE - Ensure compatibility with C17 standard - Verify that all functions work correctly in the target ESP-32 environment - Audit for potential compliance issues with industrial standards ### RECOMMENDATIONS - Extend type support to include additional numeric types as needed - Add more robust error handling for conversion failures - Consider adding string formatting utilities for consistent output generation - For improved performance, use static or cached conversions for frequently used values