[SOLVED] [C++] std::string::at zwraca całą zawartość

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
bart13
Sędziwy Jeż
Sędziwy Jeż
Posty: 75
Rejestracja: 14 lut 2008, 14:28
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[SOLVED] [C++] std::string::at zwraca całą zawartość

Post autor: bart13 »

Witam. mam problem z tym kodem:

Kod: Zaznacz cały

    std::string buf;
    std::ifstream t(filename.c_str());
    if (!t.good()) throw std::runtime_error("Could not load file " + filename);
    std::stringstream buffer;
    buffer << t.rdbuf();
    buf = buffer.str();
    printf("%s\n", &buf.at(1));
Otóż at(1) zwraca mi całego stringa bez pierwszego znaku. Z tego co wiem powinno zwracać drugi znak. próbowałem buf[1] ale zwraca tro samo. Jak to naprawić?
Awatar użytkownika
dawwin
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 202
Rejestracja: 18 kwie 2009, 09:16
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [C++] std::string::at zwraca całą zawartość

Post autor: dawwin »

Po pierwsze - w C++ używamy cout a nie printf.
Po drugie at() zwraca referencję do danego znaku, a ty pobierasz do niego adres. Wskaźnik jest ustawiony na drugi znak, a printf wypisze ci wszystkie znaki od tego do znaku '\0'. Jeśli chciałbyś dokonać tego za pomocą printf to użyj specyfikatora %c i wymaż &. A w c++
cout << buf.at(1) << endl;
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
bart13
Sędziwy Jeż
Sędziwy Jeż
Posty: 75
Rejestracja: 14 lut 2008, 14:28
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [C++] std::string::at zwraca całą zawartość

Post autor: bart13 »

Ok, dzięki, zadziałało.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości