Ad argvmentvm transi
Topos Uranos

Svmmarivm

Textvs est datvm programmatis freqventissimvm: nomina, nvntii, versvs plicae, mandata vsoris. Haec lectio evm tractat vt id qvod lingvae C++ est, seqventiam charactervm cvm operationibvs propriis. Praebet std::string, qvae creatvr, concatenatvr, comparatvr et percvrritvr vt vector ipsivs char mvnere textvs fvngens; eivs operationes qvaerendi et extrahendi (find, substr, starts_with, contains) et valorem std::string::npos, qvo find dicit se nihil invenisse; std::string_view, conspectvm qvi textvm sine exemplo observat, et condicionem e qva pendet: vt textvs observatvs exsistere pergat. Lectionem clavdvnt catenae C, ad codicem alienvm legendvm, et ordo qvo C++ verba comparat et ordinat.

Proposita discendi

  1. Operationibvs ipsivs std::string (size, +, find, substr, starts_with, contains) vti ad qvaestiones textvs solvendas.
  2. Eventvm ipsivs find interpretari et cvm std::string::npos conferre, et praedicere qvid accidat si vt nvmervs qvilibet tractetvr.
  3. Textvm in fvnctione vt std::string_view accipere et exemplo explicare cvr conspectvs catenam qvam observat svpervivere non debeat.
  4. Codicem cvm catenis C legere et discrimina earvm a std::string explicare: terminatorem nvllvm, magnitvdinem fixam et svmmam dvorvm litteralivm, qvae non compilatvr.

Catena std::string

Creare, concatenare, percvrrere

Lectio Characteres, valores Booleani, conversiones et constantes characterem, char, vt nvmervm parvvm praebvit qvem tabvla in litteram convertit. Textvs est svccessio charactervm; si ita est, in std::vector<char> servari potest, et qvae lectio Vectores de seqventiis docvit, de eo valerent. Atqvi a texto operationes petvntvr qvae a seqventia qvalibet non petvntvr: alivm textvm ei adivngere, verbvm in eo qvaerere, frvstvm extrahere, evm vno ictv scribere. Inde seqvitvr genvs proprivm, catena charactervm, std::string, ex capite <string>: vector ipsivs char mvnere textvs fvngens.

Programma in C++
#include <format>#include <print>#include <string>​int main(){    const std::string first{"Ada"};    std::string greeting{"Salve, " + first};    greeting += '.';    std::println("{} ({} characteres)", greeting, greeting.size());    std::println("Primvs «{}», vltimvs «{}»", greeting[0], greeting.back());    int spaces{0};    for (const char c : greeting) {        if (c == ' ') {            ++spaces;        }    }    std::println("Spatia: {}", spaces);    const std::string code{std::format("{}-{:03}", "MAT", 7)};    std::println("{} {}", code, code == "MAT-007");}
Exitvs
Salve, Ada. (11 characteres)Primvs «S», vltimvs «.»Spatia: 1MAT-007 true

Versvs 7 catenam ex litterali creat. Versvs 8 eam concatenat: operator + inter catenam et litterale catenam novam gignit cvm characteribvs vtrivsqve, alteris post alteros. Versvs 9 characterem in fine addit per +=, qvod etiam catenam vel litterale admittit. Cetera svnt qvae iam de vectoribvs sciebantvr: size() characteres nvmerat (11, qvia virgvla, spativm et pvnctvm qvoqve characteres svnt), greeting[0] est primvs et back() vltimvs, et circvitvs versvvm 13 ad 17 catenam characterem post characterem percvrrit forma per intervallvm lectionis Circvitvs. Vt vector, catena praeterea push_back, pop_back et empty admittit, et bibliotheca GCC 15, cvm non optimizatvr, indices eivs per operator[] examinat (cvm optimizatione, id examen evanescit).

Dvo vltimi versvs praestant qvod lectio Designare per fvnctiones promisit. std::format, ex <format>, eadem signa loci accipit ac std::println, cvm iisdem specificationibvs formae ({:03} zeris complet vsqve ad tres notas), sed eventvm non scribit, vervm vt catenam reddit: ita textvs constrvitvr qvi deinde servatvr, comparatvr vel fvnctioni traditvr. Et == dvas catenas secvndvm contentvm comparat: aeqvales svnt si eandem magnitvdinem et eosdem characteres eodem ordine habent. Itaqve code == "MAT-007" est true, qvamqvam textvs sinister frvstatim constrvctvs est et dexter litterale est.

Comparare

Praeter == et !=, catenae <, <=, > et >= admittvnt, qvae eas ordine lexicographico comparant, ordine lexici: ambae pariter percvrrvntvr, et in prima positione in qva differvnt character minor decernit; si altera privs sine vllo discrimine deficit, brevior minor est. Sic catena «mala» minor est qvam «mola», qvia in secvnda positione 'a' < 'o', et «ros» minor est qvam «rosa», qvia prior praefixvm posterioris est. Operatores catenas comparant: inter dvo litteralia inter vncos scripta alivd comparant, qvia litterale non est std::string sed series, vt in sectione de catenis C videbitvr. Qvis character «minor» sit codex eivs decernit, non alphabetvm; vltima sectio lectionis ostendit qvid inde seqvatvr.