Hoe een STD :: String Research? [DUPLICEER]

Ik probeer erachter te komen hoe u de string wilt omkeren tempWanneer ik de tekenreeks heb gelezen in binaire cijfers

istream& operator >>(istream& dat1d, binary& b1)    
{              
    string temp; 
    dat1d >> temp;    
}

Antwoord 1, Autoriteit 100%

Ik weet niet zeker wat je bedoelt met een tekenreeks die binaire cijfers bevat. Maar voor het omkeren van een string (of een STL-compatibele container), kunt u std::reverse()gebruiken. std::reverse()werkt op zijn plaats, zodat u eerst een kopie van de reeks wilt maken:

#include <algorithm>
#include <iostream>
#include <string>
int main()
{
    std::string foo("foo");
    std::string copy(foo);
    std::cout << foo << '\n' << copy << '\n';
    std::reverse(copy.begin(), copy.end());
    std::cout << foo << '\n' << copy << '\n';
}

Antwoord 2, Autoriteit 57%

Probeer

string reversed(temp.rbegin(), temp.rend());

Bewerken : Emaboreren zoals gevraagd.

string::rbegin()en string::rend(), die respectievelijk staan voor “reverse begin” en “reverse end”, retourneren reverse iteratorsin de tekenreeks. Dit zijn objecten die de standaard iterator-interface ondersteunen (operator*om te verwijzen naar een element, dwz een teken van de string, en operator++om door te gaan naar het “volgende” element), zodanig dat rbegin()naar het laatste teken van de tekenreeks wijst, rend()naar de eerste wijst, en als de iterator vooruitgaat, wordt deze naar de vorigeteken (dit is wat het een omgekeerde iterator maakt).

Ten slotte is de constructor waar we deze iterators aan doorgeven een stringconstructor van de vorm:

template <typename Iterator>
string(Iterator first, Iterator last);

die een paar iterators van elk type accepteert die een reeks tekens aangeven, en de tekenreeks initialiseert naar die reeks tekens.

Other episodes