Ako mi moze funkcia vratit znaky stringu ? Myslim taketo nieco :
int funkcia()
{
for (int i=0; i < 10; i++){
return i;
}}
Proste potrebujeme tymto sposobom prechadzat nejaky retazec a aby mi funkcia postupne vratila jednotlive znaky.
Ako mi moze funkcia vratit znaky stringu ? Myslim taketo nieco :
int funkcia()
{
for (int i=0; i < 10; i++){
return i;
}}
Proste potrebujeme tymto sposobom prechadzat nejaky retazec a aby mi funkcia postupne vratila jednotlive znaky.
Nejjednodušší je dát cyklus mimo funkci, popř. to můžeš udělat přes tzv. lambda fukci:
string text = "Nějaký text"
for_each(text.begin(), text.end(), [&](char ch){
//a zde může pracovat s každým znakem stringu jako s ch
});
skusam toto a nefunguje :(
int citaj(string a)
{
int x;
string b = a;
for (int i=0; i < b.size(); i++)
{
x = b[i];
return x;
}
}
int main()
{
int p;
char ch;
string s = "!,1,123,1234:";
p = citaj(s);
cout << p;
return 0;
}
#4 Martin
Takto nějak?
void zpracujZnak(char& ch)
{
cout << ch;
ch = '.'; // muzes upravovat původni text pres znaky
}
void ctiText(string& text)
{
for (char& znak : text)
zpracujZnak(znak);
}
int main(int argc, char** argv)
{
string text = "bagr";
cout << text; // vypise: bagr
ctiText(text); // vypise: bagr (po znacich)
cout << text; // vypise: .... (uprava ve fci "zpracujZnak")
return EXIT_SUCCESS;
}
#10 Martin
je to tak jak napsal KIIV, používáš starší verzi kompilátoru (potřebuješ c++11)
nebo můžeš použít klasickej zápis toho cyklu:
for (int i = 0; i < text.length(); ++i)
zpracujZnak(text.at(i));
případně přes iterator
string::iterator it = text.begin();
for (; it != text.end(); ++it)
zpracujZnak(*it);
Aha uz chapem. Neviem ci je to presne to čo potrebujem , musim si to poriadne prejst. Aby som popísal cele čo riešim : Z jedneho PC chcem posielat string cez serial port do druheho. Viem ich poslat po znakoch ako ASCII ( int ). V druhom PC potrebujem ten string dat zase dokopy, rozparsovat ho (alebo to spravit hned) a dostat udaje z neho do premených pre funkcie ktore budem volat a tie premenne im priradim. Ale napr aj prvé čislo z retazca mi bude oznacovat ktoru funkciu zavolať. Takže je toho dost
void odesliText(const string text)
{
for (int i = 0; i < text.length(); ++i)
{
int znak = text.at(i);
// zde primo odesles znak pres serial
}
}
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku