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