Portál AbcLinuxu, 7. listopadu 2025 15:23
char retazec[3];
cin << retazec[];
cout << retazec[] << endl;
if (retazec == "ahoj")
{
cout << "true";
}
else
{
cout << "false";
}
ked napisem ahoj, vrati mi to "ahoj" a "false". skusal som to upravit napr if (retazec == "ahoj\n") (Perl by to myslim zozral keby tam bolo eq :) apod. Ale nic som nevyriesil. Chapem ze to je ulozene v poli, takze by sa to mohlo dat vyriesit nejakym porovnanim z polom. Neide mi to ani ked si tu premennu nadefinujem v kode (teda bez cin). A co ma trapi najviac, kvoli comu som to vlastne robil je, mi to neporovna parameter predavany funkcii main z prikazoveho riadku. teda ked som to spravne pochopil, argv je vnorene pole a k tomu este ako ukzaovatel? ako to teda vyriesit? ukazovatele mi zatial akosi neidu a mam v tom truchu zmatok. pls pomozte niekto....
std::string a pak je namístě i operátor ==.
retazec == "ahoj"char[], což je pointer na začátek řetězce. Je nutné použít buď fci strcmp deklarovanou v string.h: if (! strcmp (retazec, "ahoj")), nebo (vzhledem k tomu, že to je C++ kód) je daleko čistějším řešením typ std::string místo char[], kde to jde dělat intuitivně tak, jak jste napsal (tedy std::string retazec
...
if (retazec == "ahoj"). Je myslím v #include <string>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
if (!strcmp(argv[2],"ahoj"))
{
cout << "true\n";
}
else
{
cout << "false\n";
}
}
bud mi to vrati false ked tam nedam nic, alebo segmention fault ked dam ako parameter ahoj alebo hocico ine... skusal som to aj ako
int main(int argc, char *argv[])aky je medzi tym vlastne rozdiel ?
char retezec[velikost]), je dobré použít takovou funkci, kterou lze rovněž omezit, tj. třeba fgets(retezec, sizeof(retezec), stdin). A nebo lze použít vhodnější string.
cin >> retezec;Místo
cin může přijít jakýkoli jiný objekt vzešlý z istream, ale musí tam být šipečky od objektu, ne do něj.
== porovnává hodnoty, u standardních polí jsou to tedy nějaké ukazatele. V C++ jej lze přetížit, takže u objektů typu string nebo jednoho string a jednoho pole char * se porovnávají skutečně řetězce.
main jsou záludné. V argc je počet parametrů, v argv je pole ukazatelů na řetězce s těmito parametry. Délka pole argv může být pokaždé různá, jediný prvek, který je přítomen vždy, je argv[0], tedy název programu. Pokud chceme pracovat s nějakým dalším, je potřeba se nejprve ujistit o jeho přítomnosti pomocí argc.
endl než "\n".
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.