Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Deklaracja zmiennych tekstowych niszczy program

Ostatnio zmodyfikowano 2012-04-14 16:43
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
Deklaracja zmiennych tekstowych niszczy program
» 2012-04-14 16:25:36
Wczoraj pisałem zadanie domowe. Napisałem usuwanie spacji obok siebie. Program działa dobrze. Piszę dalej i:
"Fraza zostala odnaleziona na pozycji 4294967295"
Jak to się stało?

Kod działający dobrze:
C/C++
#include <iostream>
#include <string>
void zamien( std::string & sTekst, std::string znacznikht[], std::string znacznikbb[] )
{
   
}
std::string konwertuj( std::string & sTekst )
{
    std::string sWynik;
    std::string spacje = "  ";
   
   
    // std::string znacznikbb[2];
    //  znacznikbb[1]="[b]";
    //  znacznikbb[2]="[/b]";
   
    //   std::string znacznikht[2];
    //  znacznikht[1]="<b>";
    //  znacznikht[2]="</b>";
   
    size_t pozycja = sTekst.find( spacje );
   
   
    do
    {
        std::cout << pozycja << std::endl;
        std::cout << "Fraza zostala odnaleziona na pozycji " << pozycja << std::endl;
        pozycja = sTekst.find( spacje );
       
        if( pozycja != std::string::npos )
        {
            sTekst.erase( pozycja, 2 );
            std::cout << sTekst << std::endl;
        }
       
    } while( pozycja != std::string::npos );
    //--------------------------------------------
    //int licz=0;
   
    //  do
    // {
    //      licz++;
    //      zamien(sTekst, znacznikht, znacznikbb);
   
    //  } while(licz!=2);
   
   
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    std::cout << tekst << std::endl;
    return 0;
}

Zły:
C/C++
#include <iostream>
#include <string>
void zamien( std::string & sTekst, std::string znacznikht[], std::string znacznikbb[] )
{
   
}
std::string konwertuj( std::string & sTekst )
{
    std::string sWynik;
    std::string spacje = "  ";
   
   
    std::string znacznikbb[ 2 ]; //
    znacznikbb[ 1 ] = "[b]"; //  TO JUŻ NIE JEST W KOMENTARZU
    znacznikbb[ 2 ] = "[/b]"; //
   
    //   std::string znacznikht[2];
    //  znacznikht[1]="<b>";
    //  znacznikht[2]="</b>";
   
    size_t pozycja = sTekst.find( spacje );
   
   
    do
    {
        std::cout << pozycja << std::endl;
        std::cout << "Fraza zostala odnaleziona na pozycji " << pozycja << std::endl;
        pozycja = sTekst.find( spacje );
       
        if( pozycja != std::string::npos )
        {
            sTekst.erase( pozycja, 2 );
            std::cout << sTekst << std::endl;
        }
       
    } while( pozycja != std::string::npos );
    //--------------------------------------------
    //int licz=0;
   
    //  do
    // {
    //      licz++;
    //      zamien(sTekst, znacznikht, znacznikbb);
   
    //  } while(licz!=2);
   
   
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    std::cout << tekst << std::endl;
    return 0;
}

Tylko utworzyłem zmienne. Nigdzie nawet ich nie użyłem, a program zepsuty * __ *

??
P-54506
m4tx
» 2012-04-14 16:43:22
C/C++
std::string znacznikbb[ 2 ];
znacznikbb[ 1 ] = "[b]";
znacznikbb[ 2 ] = "[/b]";

Hm...
znacznikbb[ 2 ]
 w ogóle nie istnieje. Poczytaj sobie jeszcze raz o tablicach :P
P-54507
« 1 »
  Strona 1 z 1