Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 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.
#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
-
Sekoitatkohan nyt nämä kaksi operaattoria:
https://cplusplus.com/reference/ostream/ostream/operator%3C%3C/
https://cplusplus.com/reference/istream/istream/operator%3E%3E/
-
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 :)
-
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ä".