Kirjoittaja Aihe: [ ratkaistu ] c++ std::stringstream -ongelma  (Luettu 105 kertaa)

teele

  • Käyttäjä
  • Viestejä: 894
    • Profiili
[ ratkaistu ] c++ std::stringstream -ongelma
« : 06.10.25 - klo:20.47 »
Kokeilin lukea tekstiä stringstreamilla, mutta miksi se ei koskaan ymmärrä, että anettu syöte on loppu eli miksi ja mistä se lukee ylimääräisen merkin alla olevassa esimerkissä.

Kokeilin syötteenä sanaa qwer ilman loppuvälilyöntiä, yhden loppuvälilyönnin kanssa ja useamman loppuvälilyönnin kanssa. Aina mennään if :iin << -operaattorin kanssa.

Miten  std::strinstreamin saisi ymmärtämään, että syöte on loppunut eikä ylimääräisiä merkkejä pitäisi olla.


Koodia: [Valitse]

#include <iostream>
#include <string>
#include <sstream>

int main()
{
  std::string syote1 =  "qwer    ";   // "qwer " tai "qwer" aina if menee läpi
  std::stringstream ss(syote1);
  std::string merkkijono;

  std::getline(ss, merkkijono, ' ');
  std::cout << syote1 << "|||" << std::endl;
  std::cout << merkkijono << "|||" << std::endl;
  char ylimaarainenMerkki;

  std::cout << "eka: " << (int)ylimaarainenMerkki << std::endl;
  if(ss << ylimaarainenMerkki   )
    {
      std::cout << "tästä virhe" << std::endl;
      std::cout << "toka: " << (int)ylimaarainenMerkki << std::endl;
      std::cout << "ylimaarainenMerkki on: " << ylimaarainenMerkki << std::endl;
    } 
  return 0;
}

// g++ testi_01.cpp -o testi_01 -pedantic
// ./testi_01

« Viimeksi muokattu: 06.10.25 - klo:21.40 kirjoittanut teele »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11565
    • Profiili
    • Tomin kotisivut
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

teele

  • Käyttäjä
  • Viestejä: 894
    • Profiili
Vs: c++ std::stringstream -ongelma
« Vastaus #2 : 06.10.25 - klo:21.22 »
std::stringstreamin pitäisi toimia kumpaankin suuntaan

"A stringstream is a part of the C++ Standard Library, defined in the <sstream> header file. It allows us to read from and write to strings like they are streams."

sivun

https://www.geeksforgeeks.org/cpp/stringstream-c-applications/

mukaan. Saman sivun mukaan

stringstream
   Both input and output

istringstream
   Input only (like cin)

ostringstream
   Output only (like cout)

En vielä ole ehtinyt kokeilla std::istringstreamia, mutta kokeilen heti

Muokk.

juu, taisinpa sekoittaa, piti kääntää <<,   mutta tarkistelen asiaa, ehkä sekoitan jotain muutakin

Kiitos neuvosta  :)
« Viimeksi muokattu: 06.10.25 - klo:21.33 kirjoittanut teele »

_Pete_

  • Käyttäjä
  • Viestejä: 1857
  • Fufufuuffuuu
    • Profiili
Vs: [ ratkaistu ] c++ std::stringstream -ongelma
« Vastaus #3 : 08.10.25 - klo:08.49 »
Kannattaa tutustua miten käytetään debuggeria niin tällaisten asioiden selvittäminen  helpottuu.

Tässä yksi online versio:

https://www.onlinegdb.com/online_c++_debugger

Debuggerilla voi ajaa koodia rivi/statement kerrallaan ja joka askeleen jälkeen näkee muutujien arvot "livenä".