Custom String Formatting#
Introduction#
String formatting in C++ for VEX V5 uses printf-style format specifiers to create strings that include variables, expressions, or values. This method uses format specifiers like %d, %f, %s, etc., to insert values into strings.
Formatting Numbers — Insert values and expressions into a string.
%d— Formats integers.%.xf— Sets the number of decimal places to show for floats.%x— Formats a number as hexadecimal.%c— Formats single characters.%s— Formats C-style strings.
Combining Strings — Combine text and values.
strcat— Concatenate C-style strings manually.
Checking for Substrings — Test for presence or position of text.
strstr— Finds a substring within a string.
Escape Sequences — Format output with special characters.
\n— Adds a line break (new line).
Formatting Numbers#
C++ uses format specifiers to control how numbers and other data types appear in strings.
Integers#
Formats integer values using the %d format specifier.
%d
This format specifier does not have parameters.
Return ValuesFormats the integer value as an integer in the string.
Examplesint count = 42;
// Display a single variable
Brain.Screen.print("Count: %d", count);
int x = 1;
int y = 5;
// Display multiple variables
Brain.Screen.print("Position: (%d, %d)", x, y);
// Display a calculation
Brain.Screen.print("Sum: %d", 5 + 3);
// Display the robot's battery capacity
Brain.Screen.print("Battery: %d%%", Brain.Battery.capacity());
Fixed Decimal Places#
Controls how many decimal places a floating-point number is displayed with using the %.xf format specifier.
%.xf
Parameter |
Type |
Description |
|---|---|---|
|
|
The number of decimal places to show. |
Formats the floating-point value with the specified number of decimal places.
Examples// Display pi with 2 decimal places
double pi = 3.1415926535;
Brain.Screen.print("Pi: %.2f", pi);
Hexadecimal#
Converts numbers to hexadecimal representation using %x (lowercase) or %X (uppercase).
1 — Formats numbers as lowercase hexadecimal.
%x
Parameters2 — Formats numbers as uppercase hexadecimal.
%X
This format specifier does not have parameters.
Return ValuesFormats the integer value as a hexadecimal string.
Examples// Convert 255 to hexadecimal
int number = 255;
// Display hexadeximals
Brain.Screen.print("Hex: %x", number);
Brain.Screen.print("Hex: 0x%X", number);
Characters#
Formats single characters using the %c format specifier.
%c
This format specifier does not have parameters.
Return ValuesFormats the character value as a single character.
Exampleschar letter = 'A';
// Display a single character variable
Brain.Screen.print("Letter: %c", letter);
Strings#
Formats C-style strings (character arrays) using the %s format specifier.
%s
This format specifier does not have parameters.
Return ValuesFormats the string value as text.
Exampleschar message[] = "V5";
// Display a string variable
Brain.Screen.print("Hello, %s", message);
Combining Strings#
Combines two strings together using the strcat function.
char* strcat(char* string1, const char* string2);
Parameter |
Type |
Description |
|---|---|---|
|
|
The string to add onto. Must have space for the new text. |
|
|
The string you want to add. |
Returns a pointer to the resulting string (string1).
Make sure that the string has enough space reserved for the characters that are being appended. Adding characters to a string that is too small can overwrite other variables and cause unexpected behavior.
// Make sure the variable has enough space
// for all characters (set it to 20)
char message[20] = "Hello,";
strcat(message, " V5");
// Display the combined strings
Brain.Screen.print("%s", message);
Checking for Substrings#
Returns a pointer to the position of the first occurrence of a C-style string in another string using the strstr function.
char* strstr(const char* str, const char* substring);
Parameter |
Type |
Description |
|---|---|---|
|
|
A pointer to the string being searched. |
|
|
The string to search for. |
Returns a pointer to the first occurrence of the substring, or NULL if the string is not found.
char message[] = "Hey everyone!";
// Display if "Hey" is in the variable
if (strstr(message, "Hey") != NULL) {
Brain.Screen.print("Hello!");
}
Escape Sequences#
Escape sequences are special characters used inside strings to format text output.
New Line#
Moves text to a new line when printing using the \n escape sequence.
\n
This escape sequence does not have parameters.
Return ValuesInserts a newline character in the output.
NotesThis only works on the console. Text will not be sent to the console until a new line is started.
// Display text on two lines
printf("First line\nSecond line\n");