• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Polskie znaki w C::B Win 10, program z kursu nr15 C++ nie dziala

0 głosów
660 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez Kris11 Nowicjusz (160 p.)
#include <iostream>
#include <string>

using namespace std;
char *tr(char *str) // Konwersja z win1250 na cp852
{
    static char buff[256];
    char cp[]="\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
    if(strlen(str)>=sizeof(buff))
        return str;
    char *bf=buff;
    while(*str)
    {
        char *pos=strchr(cp+18,*str);
        *(bf++)=pos?*(pos-18):*str;
        ++str;
    }
    *bf=0;
    return buff;
}
string napis;
int main()
{
    cout<<tr("Zażółć gęślą jaźń")<<endl;
    cin>>napis;
    cout<<tr("Wpisany ciąg znaków: ")<<napis<< endl;
    return 0;  
}

Wyskakuje komunikat bledu do linii z if(): error: 'strlen' was not declared in this scope

1 odpowiedź

0 głosów
odpowiedź 22 marca 2020 przez j23 Mędrzec (195,220 p.)
edycja 22 marca 2020 przez j23

Załącz <string.h>.

 

I popraw funkcję na mniej błędogenną:

std::string tr(const char* str) // Konwersja z win1250 na cp852
{
    const char* cp1250 = "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
    const char* cp852 = "\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215";
    std::string out;

    while (*str) {
        char* pos = strchr(cp1250, *str);
        out += pos ? cp852[pos - cp1250] : *str;
        ++str;
    }
    return out;
}

 

komentarz 28 marca 2020 przez Kris11 Nowicjusz (160 p.)

Dziękuję

Zrobiłem to inaczej

Po prostu dodałem na początku:  string strlen();

Oczywiście zamieniłem #include <string> na #include <string.h>

Jeszcze raz dziękuję i pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 895 wizyt
pytanie zadane 11 maja 2020 w C i C++ przez Majster6918 Gaduła (4,030 p.)
0 głosów
1 odpowiedź 931 wizyt
pytanie zadane 27 maja 2018 w SQL, bazy danych przez daro793704 Początkujący (350 p.)
0 głosów
2 odpowiedzi 1,919 wizyt
pytanie zadane 23 lutego 2017 w PHP przez prymex Obywatel (1,250 p.)

93,600 zapytań

142,525 odpowiedzi

322,993 komentarzy

63,085 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...