kopieren von arrays von strings in C++
Habe ich ein array von Variablen des Typs "string". So etwas wie:
std::string Array1[3] = {"A","B","C"};
Möchte ich kopieren Sie den Inhalt dieses Arrays in ein anderes:
std::string Array2[3];
Im moment habe ich eine Schleife verwenden, um dies zu tun. Gibt es eine
einfacher/alternative? Auch wenn ich das deklarieren und initialisieren der Variablen
wie folgt:
if( ... check some condition ... )
{
.
.
std::string Array1[3] = {"A","B","C"};
}
es wird natürlich zerstört werden, sobald das verlassen der Gültigkeitsbereich der if-Anweisung. Ist es
eine Möglichkeit, dies zu vermeiden, so dass Sie später verwendet werden können, die in der Funktion. Idealerweise würde ich gerne vermeiden, deklarieren Sie die variable Array1 global.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, mit einer Reihe von komplexen Objekten müssen Sie eine Schleife, oder Sie können wickeln Sie die Schleife mit
std::copy
:Jedoch, schlage ich vor, die mehr kanonische
std::vector
, die native Zuordnung (siehe diese SO beantworten Sie für sich die Möglichkeiten zum Auffüllen einerstd::vector
):Oder zumindest
boost::array
(std::array
wenn Sie auf C++0xstd::tr1:array
oder ähnliches TR1-fähig, toolchains wie den jüngsten MSVS), die von einer statisch zugewiesenen gleichwertig, können auch zugewiesen werden:std::tr1::array
, ja. Obwohl präzise namespaceness variiert zwischen Implementierungen.Können Sie
std::copy
(und die meisten algorithmen) mit Zeigern und arrays leicht zerfallen zu Zeigern, also können Sie etwas tun, wie dies zu vermeiden, abrollen Ihre eigenen Schleife (um sicherzustellen, dass die Größen korrekt sind):Auf den zweiten Teil der Frage, die ich nicht ganz begreifen, was Sie tun möchten. Entweder das array ist lokal auf den Umfang oder nicht, wenn es lokal auf den Bereich, den Sie nicht verwenden Sie es außerhalb der Reichweite, wenn Sie es brauchen, auf Funktionsumfang, einfach deklarieren es gibt.
Versuchen Sie es mit
std::vector
auch:Oder,