Was ist der moderne Weg, dies zu tun? Header wie <cstring>
sind veraltet und "C-like" -Funktionen sind durch einige Codierungsstile verboten. Ich habe drei Ansätze, das Gleiche zu tun. Welches wäre am meisten von modernem C++?Moderne C++ Möglichkeit zum Kopieren von Zeichenfolgen in Zeichen *
1. Verwenden Iteratoren und schließen die Nullabschluss
{
std::string test{"hello, world!"};
char* output = new char[test.size() + 1];
std::copy(test.begin(), test.end(),
output);
output[test.size() + 1] = '\0';
std::cout << output;
delete output;
}
2. Verwenden c_str()
die dem Nullabschluss
{
std::string test{"hello, world!"};
char* output = new char[test.size() + 1];
std::copy(test.c_str(), test.c_str() + std::strlen(test.c_str()),
output);
std::cout << output;
delete output;
}
3. Verwenden std::strcpy
Ich möchte nicht zu einem Interviewer wie ein noob aussehen, die sagen: "Oh, du benutzt strcpy, du musst ein C-Programmierer sein".
Wenn ich Sie wäre, würde ich mich um die Ausnahmesicherheit kümmern, den ganzen Block mit einem "try" umwickeln und "std :: bad_alloc" fangen. Auch "Header wie sind veraltet" - seit wann ?! –
Was * genau * ist die Ziel-Datenstruktur? Ist es malloc-allozierte 0-terminierte Zeichenfolge? Oder ist es "zugängliche 0-terminierte Zeichenfolge"? Oder eigentlich wirklich die Bastard neu zugewiesene 0-terminierte Zeichenfolge? – Deduplicator
@DanielKamilKozar Seit C++ 98. Verrückt, ich weiß. – user6364501