Skip to content

String::clear() does not work as expected #4893

Closed
@anp59

Description

@anp59

Description:

Hi guys,
I noticed that the function String::clear() does not behave as expected. According to the name, it should clear the content of a string object, i.e. after this operation an empty String is returned. This works for all string methods except String::c_str(). Here, the content is retained.
Internally, the clear method only sets the length of the string to 0. For c_str(), however, the first character in the internal memory buf would also have to be set to 0 ('\0').

Sketch:

#include <Arduino.h>

void setup() {
    String s = "abc";
    Serial.print("print(s):         ->");Serial.println(s);
    Serial.print("print(s.c_str()): ->");Serial.println(s.c_str());
    s.clear();
    Serial.println("After s.clear():");
    Serial.print("print(s):         ->"); Serial.println(s);
    Serial.print("print(s.c_str()): ->"); Serial.println(s.c_str());
}

void loop() {
}

Output:

print(s):         ->abc
print(s.c_str()): ->abc
After s.clear():
print(s):         ->
print(s.c_str()): ->abc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions