Parse OSD packed #17

Open
opened 2026-10-05 05:58:57 +02:00 by adam · 0 comments
Owner

TEXT1,X,Y;TEXT2,X,Y;...

#include
#include
#include // For strtok

int main() {
// Input string
char input[] = "test1,1,1;test2,1,2;test3,1,3";

// Define a 2D array of strings
const int MAX_GROUPS = 10;  // Maximum number of groups
const int MAX_VALUES = 10; // Maximum number of values per group
std::string parsed[MAX_GROUPS][MAX_VALUES];

// Parse the input
int groupIndex = 0;
for (char* group = std::strtok(input, ";"); group && groupIndex < MAX_GROUPS; group = std::strtok(nullptr, ";")) {
    int valueIndex = 0;
    for (char* value = std::strtok(group, ","); value && valueIndex < MAX_VALUES; value = std::strtok(nullptr, ",")) {
        parsed[groupIndex][valueIndex++] = value;
    }
    groupIndex++;
}

// Output the parsed values
std::cout << "Parsed values:" << std::endl;
for (int i = 0; i < groupIndex; ++i) {
    for (int j = 0; !parsed[i][j].empty(); ++j) {
        std::cout << parsed[i][j];
        if (!parsed[i][j + 1].empty()) std::cout << ",";
    }
    std::cout << std::endl;
}

// Example of direct access
std::cout << "First element [0][0]: " << parsed[0][0] << std::endl;

return 0;

}

TEXT1,X,Y;TEXT2,X,Y;... #include <iostream> #include <string> #include <cstring> // For strtok int main() { // Input string char input[] = "test1,1,1;test2,1,2;test3,1,3"; // Define a 2D array of strings const int MAX_GROUPS = 10; // Maximum number of groups const int MAX_VALUES = 10; // Maximum number of values per group std::string parsed[MAX_GROUPS][MAX_VALUES]; // Parse the input int groupIndex = 0; for (char* group = std::strtok(input, ";"); group && groupIndex < MAX_GROUPS; group = std::strtok(nullptr, ";")) { int valueIndex = 0; for (char* value = std::strtok(group, ","); value && valueIndex < MAX_VALUES; value = std::strtok(nullptr, ",")) { parsed[groupIndex][valueIndex++] = value; } groupIndex++; } // Output the parsed values std::cout << "Parsed values:" << std::endl; for (int i = 0; i < groupIndex; ++i) { for (int j = 0; !parsed[i][j].empty(); ++j) { std::cout << parsed[i][j]; if (!parsed[i][j + 1].empty()) std::cout << ","; } std::cout << std::endl; } // Example of direct access std::cout << "First element [0][0]: " << parsed[0][0] << std::endl; return 0; } <!-- github-sync-id:2754871013 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/LoraSA#17