Return znakov stringu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Return znakov stringu – C / C++ – Fórum – Programujte.comReturn znakov stringu – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 188.167.184.–
Reklama
Reklama
KIIV+42
God of flame
1. 5. 2013   #2
-
0
-

ne.. ale furt muzes ten for dat mimo funkci a jen ji spoustet pro kazdou polozku...

pripadne dat lepsi popis o co se snazis

Nahlásit jako SPAM
IP: 86.49.86.–
Program vždy dělá to co naprogramujete, ne to co chcete...
yaqwsx+9
Posthunter
1. 5. 2013   #3
-
0
-

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
});
Nahlásit jako SPAM
IP: 85.160.39.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #4
-
0
-

Potrebujem poslat string po znakoch a druha funkcia mi tie znaky bude citat ( Nemozem poslat cely string, bude sa to posielat cez seriovy port z jedneho PC do druheho) .

Nahlásit jako SPAM
IP: 188.167.184.–
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #5
-
0
-

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;
}

Nahlásit jako SPAM
IP: 188.167.184.–
ingiraxo+15
Grafoman
1. 5. 2013   #6
-
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;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #7
-
0
-

dik , ale nejak mi ten kod nefunguje :(

Nahlásit jako SPAM
IP: 188.167.184.–
ingiraxo+15
Grafoman
1. 5. 2013   #8
-
0
-

#7 Martin
kód funguje, jen tobe něco chybí.. napiš sem tu chybu

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
KIIV+42
God of flame
1. 5. 2013   #9
-
0
-

#7 Martin
pravdepodobne proto, ze pouziva novej standard C++ ... s nejakym starsim kompilatorem se nechytas...

Nahlásit jako SPAM
IP: 86.49.86.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #10
-
0
-

   

Nahlásit jako SPAM
IP: 188.167.184.–
ingiraxo+15
Grafoman
1. 5. 2013   #11
-
0
-

#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);

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #12
-
0
-

    ok, dik, ide

Nahlásit jako SPAM
IP: 188.167.184.–
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #13
-
0
-

#12 Martin
....len ta funkcia "ctiText" mi to len vypise, nie ? Ale ja chcem aby mi vracala ten znak, aby som ho mohol načítat do dalsej funkcie.

Nahlásit jako SPAM
IP: 188.167.184.–
ingiraxo+15
Grafoman
1. 5. 2013   #14
-
0
-

#13 Martin
však ten znak se ti posílá do funkce "zpracujZnak", kde si s ním udělej co chceš, funkce "ctiText" jen čte text po znacích a posílá je do ty funkce "zpracujZnak"

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #15
-
0
-

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 

Nahlásit jako SPAM
IP: 188.167.184.–
ingiraxo+15
Grafoman
1. 5. 2013   #16
-
0
-

   

void odesliText(const string text)
{
    for (int i = 0; i < text.length(); ++i)
    {
        int znak = text.at(i);
        
        // zde primo odesles znak pres serial
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1377 příspěvků
1. 5. 2013   #17
-
0
-

zatial dik, budem skusat to dat dokopy .

Nahlásit jako SPAM
IP: 188.167.184.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 89 hostů

Podobná vlákna

Return — založil

Problem s return — založil john-smith

Return v kompozici — založil Tomáš

Return vs exit — založil Robo

Jak zavolat return? — založil Vladimir

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý