Strona 1 z 1

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

: 28 sie 2010, 09:26
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ć?

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

: 28 sie 2010, 09:33
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;

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

: 28 sie 2010, 09:48
autor: bart13
Ok, dzięki, zadziałało.