Cross Product Developments - Anything to String - Recursive Struct to String, Array Set Map Object to String

Convert any data type or container into readable strings in both Blueprint and C++.Whether youโ€™re logging variables, displaying UI debug info, or formatting custom data, this plugin gives you flexible, customizable tools to turn anything into a string โ€” including Maps, Structs, Arrays, Sets, Objects, and even C++ std:: containers (C++).

๐Ÿ“• Documentation

๐Ÿ“ง Support Email: CrossProductDevelopments@gmail.com

๐ŸŽฎ Support Discord: Click to Join

โœ… Works with Unreal Engine 5.0 โ€“ 5.6

โœจ Comes with a total of 42 Nodes (27 pure, 15 callable)

๐Ÿง‘โ€๐Ÿ’ป Has a total of 58 user-callable C++ function/macros akin to the nodes.

โš™ Features

โœ… Convert any type, including custom Structs and UObject classes, to a String or String Array

โœ… Join the string result of many different conversions together conveniently with MANY

โœ… Supports wildcards โ€” works with single values, Arrays, Sets, Maps, and nested containers

โœ… Dedicated nodes to convert Map Keys and Map Values separately

โœ… Recursive object/struct property traversal with depth control and formatting options

โœ… Supports C++ containers (UE-native and std::)

โœ… Choose between Pure nodes (quick & easy) and Callable nodes (optimized for repeated use)

โœ… Customize output via:

  • Project Settings โ†’ Plugins โ†’ Anything To String

  • Using VAR or NAME nodes (e.g. show variable names or a custom prefix)

  • Passing an Override object (to override certain options specified in the project settings).

๐Ÿ“„ Change Log

V2.3 - 19th July 2025:

+ Added nodes to Blueprint: MANY, VAR: MANY, NAME: MANY (and variants) & Print Many.

V2.2.1 - 5th July 2025:

+ Added += and -= support for FAnyOverride

+ Added MANY support for all logging macros

V2.2 - 5th July 2025:

~ Fixed VAR_KEYS_ANY, NAME_KEYS_ANY, VAR_VALUES_ANY, NAME_VALUES_ANY in C++

~ Deprecated all STR_ Macros in C++, now use NAME_ Macros instead.

+ Added MANY, VAR_MANY, NAME_MANY in C++

+ Added MANY_OV, VAR_MANY_OV, NAME_MANY_OV in C++

+ Added KEYS_MANY, VAR_KEYS_MANY, NAME_KEYS_MANY in C++

+ Added VALUES_MANY, VAR_VALUES_MANY, NAME_VALUES_MANY in C++

V2.1.4 - 22th June 2025: Made all functions within AnyStr.h static

UE5.6 Support - 6th June 2025

V2.1.3 - 6th June 2025: Internally swap FString::Printf to FString::Format for custom printouts

V2.1.2 - 16th May 2025: Fix editor-made Enums (now shows name instead of value)

V2.1.1 - 17th Match 2025:

~ Fixed passing A.B.C->D kinda things to the LOGGING macros (C++ only issue).

~ Fixed printing TWeakObjectPtr<> when it's in a container in a struct/class (C++ only issue).

~ Fixed error printing to log on engine boot relating to "UIntVector2".

~ Fixed confusion about (U)IntVector2 vs (U)IntPoint (introduced from 5.1 onwards)

V2.1.0 - 16th February 2025: Refactored Logging to ALOG, DLOG, WLOG etc.

V2.0.2 - 12th February 2025:

~ Fix lambda capture of 'this' for members when using any of the VAR_, NAME_ or STR_ C++ macros.

~ UE5.5 only fix for including via C++ (already working in other versions)

V2.0.1 - 22nd December 2024: Post-upgrade hot fix

V2 & UE5.0 Support - 21st December 2024:

+ Added C++ Support:

+ ANY(): Accepts values and converts to string (Classes & Structs must be UClasses & UStructs!)

+ KEYS_ANY(): Converts a TMap/std::map/std::unordered_map key's to an array like string.

+ VALUES_ANY(): Converts a TMap/std::map/std::unordered_map values's to an array like string.

+ ANY_ARRAY(): Converts a container to an array of strings

+ ANY_FIXEDARRAY(): Converts a fixed-size container to a TArray with TFixedAllocator<N>.

+ VAR_ANY(), VAR_KEYS_ANY(), VAR_VALUES_ANY(): Prefixes the output string with the supplied parameter / expression. For overrides use VAR_ANY_OV.

+ NAME_ANY("Name", ), NAME_KEYS_ANY(), NAME_VALUES_ANY(): Allows you to prefix with a string literal (no need for TEXT()). For overrides use NAME_ANY_OV.

+ STR_ANY(MyName, ), STR_KEYS_ANY(), STR_VALUES_ANY(): Allows you to prefix with a FString. For overrides use STR_ANY_OV.

+ PRINT_STR(FString, Color, bLogToo, Duration): Prints to the screen, if you want to use VAR_, NAME_, STR_ prefixes or KEYS_ or VALUES_, simply call like PRINT_STR(VAR_ANY(Val)) for example. Color, bPrintToLog, Duration are all optional.

+ PRINT_ANY(T, Color, bLogToo, Duration), Calls PRINT_STR(ANY(T), Color, bPrintToLog, Duration). Color, bPrintToLog, Duration are all optional.

+ LOG_ANY_TEMP(Val): LogTemp at Log Verbosity *ANY(Val). Also supports LOG_VAR_, LOG_NAME_, LOG_STR_

+ LOG_ANY_TEMP_WARNING(Val): LogTemp at Warning Verbosity *ANY(Val). Also supports LOG_VAR_, LOG_NAME_, LOG_STR_

+ LOG_ANY_TEMP_ERROR(Val): LogTemp at Error Verbosity *ANY(Val). Also supports LOG_VAR_, LOG_NAME_, LOG_STR_

+ LOG_ANY(Category, Verbosity, Val): Full log message with category & verbosity control using *ANY(Val). Also supports LOG_VAR_, LOG_NAME_, LOG_STR_

+ support for Pair and Tuple (both UE5 & C++ std versions).

+ C++ member functions "FString ToString() const" will be found and used instead for ANY (C++ only).

+ Expanded Class/Struct Field Iteration:

+ Support for UObjects

+ Recursion Parentage Search Depth Limits

+ Recursion Object Filtering

+ Recursion Depth Limits

+ Recursion Parentage Filtering

+ Filter on field PropertyFlags

+ Tabulation & newlining options, spaces, tabs etc.

+ Debug print types, class names, field names.

+ Override system, all nodes now have the option to take in an override struct, this can override things like newlining etc.

+ Added Print Self Nodes: "ANY SELF" and "NAME: ANY SELF".

~ Fixed crash plugging in 'Self' into normal ANY-like nodes (still not functional, UE limitation, but will warn instead of crash)

~ Improved Delegate Support

~ Improved Interface Support

~ Exposed a variety of formatting specifications to the settings to allow custom print outs.

UE5.5 Support - 15th November 2024

UE5.4 Support - 28th April 2024

V1.1.1 - 10th March 2024: Updated Icons

V1.1 - 16th February 2024:

+ Added VAR and NAME Nodes

+ Print Any now supports VAR and NAME. Default duration changed to 20 sec.

+ Improved Interface printing support so it will now also print the underlying object name as well as the interface name.

V1 - 13th January 2024: Initial Release (UE5.1 - UE5.3)