Kehittäjille

C++ merkkilaskuri: laske merkit merkkijonosta

Valmiit C++-koodiesimerkit merkkien laskentaan: kaikki merkit, merkit ilman välilyöntejä ja sanamäärä. Lisäksi tärkeät UTF-8-huomiot. Voit testata laskennan myös suoraan selaimessa.

✓ Kopioitavat koodit✓ UTF-8-huomiot✓ Testaa selaimessa
Merkit välilyönneillä 0 kaikki näkyvät merkit + välit
Merkit ilman välilyöntejä 0 välilyönnit poistettu
0
Sanat
0
Virkkeet
0
Kappaleet
0
Rivit
Tekstiä ei tallenneta eikä lähetetä palvelimelle

Merkkiraja tai tavoite

Oma:
0 / 0 Valitse raja tai kirjoita oma

Laskettu välilyönnit mukaan. Vaihda laskentaperustetta alla olevalla kytkimellä.

Merkkirajat eri kanavissa (merkit välilyönneillä)

Näytä tekstianalyysi
Keskim. sanan pituus
0
Sanoja / virke
0
Merkkejä / virke
0
Uniikit sanat
0
Sanaston vaihtelu
0
Arvioitu lukuaika
0 s
Arvioitu puheaika
0 s
Pisin sana
Välilyönnit
0
Rivinvaihdot
0
Sarkaimet
0
Välimerkit
0
Numerot
0
Linkit
0
Emojit
0

Yleisimmät sanat

  • Kirjoita tekstiä nähdäksesi yleisimmät sanat.
Mainospaikka

1. Kaikki merkit merkkijonosta

Perustapa laskea merkit C++:ssa on std::string-luokan size()- tai length()-metodi. Ne palauttavat merkkijonon pituuden tavuina. Puhtaassa ASCII-tekstissä tavumäärä vastaa merkkien määrää.

merkit.cpp
// Kaikki merkit (tavuina)
#include <iostream>
#include <string>

int main() {
    std::string teksti;
    std::getline(std::cin, teksti);
    std::cout << "Merkkeja: " << teksti.size() << "\n";
    return 0;
}

2. Merkit ilman välilyöntejä

Kun haluat laskea vain varsinaiset merkit, käy merkkijono läpi ja ohita tyhjät merkit funktiolla std::isspace. Näin saat vastineen sivun laskurin välilyönnittömälle luvulle.

ilman_valilyonteja.cpp
// Merkit ilman valilyonteja
#include <iostream>
#include <string>
#include <cctype>

int main() {
    std::string t; std::getline(std::cin, t);
    int n = 0;
    for (unsigned char c : t)
        if (!std::isspace(c)) n++;
    std::cout << "Ilman valilyonteja: " << n << "\n";
    return 0;
}

3. Sanamäärä

Sanat saa laskettua kätevästi std::istringstream-virralla, joka pilkkoo tekstin sanoiksi välilyöntien kohdalta.

sanat.cpp
// Sanamaara
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string rivi; std::getline(std::cin, rivi);
    std::istringstream iss(rivi);
    std::string sana; int sanat = 0;
    while (iss >> sana) sanat++;
    std::cout << "Sanoja: " << sanat << "\n";
    return 0;
}

UTF-8: tavut eivät ole sama kuin näkyvät merkit

Tämä on tärkein sudenkuoppa suomenkielisessä tekstissä. std::string::size() palauttaa tavumäärän, ei näkyvien merkkien määrää. UTF-8-koodauksessa kirjaimet ä, ö ja å vievät kaksi tavua ja monet emojit jopa neljä. Siksi sana "pää" voi näyttää olevan viisi tavua, vaikka näkyviä merkkejä on kolme.

Muista: jos haluat laskea näkyvät merkit UTF-8-tekstistä, sinun täytyy tulkita koodaus – esimerkiksi laskea vain tavut, jotka eivät ala bittikuviolla 10xxxxxx. Selaimessa toimiva laskuri yllä käyttää grafeemipohjaista laskentaa, joten voit verrata sen tulosta koodiisi.

Mainospaikka

Viimeisimmät laskelmat

Laskelmat tallentuvat vain omaan selaimeesi, jotta voit palata niihin myöhemmin.

    UKK

    Usein kysytyt kysymykset

    Miten lasken merkit merkkijonosta C++:ssa?

    Yksinkertaisin tapa on käyttää std::string-luokan size()- tai length()-metodia. Ne palauttavat merkkijonon pituuden tavuina. ASCII-teksteissä tämä vastaa merkkien määrää, mutta UTF-8-teksteissä ä, ö ja emojit voivat viedä useita tavuja.

    Miten lasken merkit ilman välilyöntejä?

    Käy merkkijono läpi ja ohita välilyönnit, esimerkiksi tarkistamalla isspace(). Voit myös poistaa vain tavalliset välilyönnit tai kaikki tyhjät merkit sen mukaan, mitä tarvitset.

    Miksi ä ja ö lasketaan väärin?

    std::string mittaa pituuden tavuina. UTF-8:ssa skandimerkki vie kaksi tavua, joten näkyvien merkkien määrä ja tavumäärä eroavat. Näkyvien merkkien laskemiseen tarvitaan koodauksen huomioiva käsittely.

    Voinko kokeilla laskentaa ilman kääntäjää?

    Kyllä. Liitä merkkijono yllä olevaan laskuriin, niin näet merkit välilyönneillä ja ilman heti selaimessa. Näin voit verrata tulosta C++-koodisi tulosteeseen.