Converteer Char * naar String C++

Ik ken het startadres van de tekenreeks (bijv. char* buf) EN DE MAX-lengte int l;VAN DE STRING (IE, het totale aantal tekens minder dan of gelijk aan l).

Wat is de eenvoudigste manier om de waarde van de stringuit het opgegeven geheugensegment te krijgen? Met andere woorden, hoe u string retrieveString(char* buf, int l);.

Bewerken : het geheugen is gereserveerd voor het schrijven en lezen van variabele lengte. Met andere woorden, int l;geeft de grootte van het geheugen aan en niet de lengte van de string.


Antwoord 1, Autoriteit 100%

std::string str(buffer, buffer + length);

of, als de tekenreeks al bestaat:

str.assign(buffer, buffer + length);

bewerken: Ik ben nog steeds niet helemaal zeker van dat ik de vraag begrijp. Maar als het zoiets is als wat Joshg suggereert, wil je dat je wilt op lengthtekens, of tot een null-terminator, die als eerste komt, dan kun je dit gebruiken:

std::string str(buffer, std::find(buffer, buffer + length, '\0'));

Antwoord 2, Autoriteit 46%

char *charPtr = "test string";
cout << charPtr << endl;
string str = charPtr;
cout << str << endl;

Antwoord 3, Autoriteit 8%

Er lijkt een paar details buiten uw uitleg te zijn, maar ik zal mijn best doen …

Als dit NUL-terminated strings zijn of als het geheugen vooraf op nul is gezet, kunt u de lengte van het geheugensegment herhalen totdat u een NUL (0)-teken of de maximale lengte bereikt (wat het eerst komt). Gebruik de tekenreeksconstructor, waarbij u de buffer en de grootte doorgeeft die in de vorige stap zijn bepaald.

string retrieveString( char* buf, int max ) {
    size_t len = 0;
    while( (len < max) && (buf[ len ] != '\0') ) {
        len++;
    }
    return string( buf, len );
}

Als het bovenstaande niet het geval is, weet ik niet zeker hoe je kunt bepalen waar een string eindigt.


Antwoord 4, autoriteit 8%

Gebruik de constructor van de tekenreeks

basic_string(const charT* s,size_type n, const Allocator& a = Allocator());

BEWERKEN:

OK, als de lengte van de C-string niet expliciet wordt gegeven, gebruik dan de ctor:

basic_string(const charT* s, const Allocator& a = Allocator());

Antwoord 5

std::string str;
char* const s = "test";
str.assign(s);

string& assign (const char* s); => signature FYR

Reference/s hier.


Antwoord 6

Laat,

char* rw="hii";  //This string is readable and writeable
const char* r="hello"; // This string is only readable 

we kunnen char* of const char* converteren naar string met behulp van de constructor van string.

string string_name(parameter);

Deze parameter accepteert zowel char* als const char* typen.

Voorbeelden:

1) string st(rw); 
 Now string 'st', contains "hii"
2) string st(r);
 Now, string 'st' contains "hello".

In beide voorbeelden is string ‘st’ beschrijfbaar en leesbaar.

Other episodes