Использование string.pop_back () и string.back ()

0

Я пытаюсь использовать функции члена string back() и pop_back(), но я думаю, что мой компилятор не распознает их как членов. Однако, когда я использую опцию -std=c++0x, компилятор перестает жаловаться только на back(), но все же жалуется на pop_back(). Вот ошибки кода и компилятора:

test.cpp:

#include <iostream>  // std::cout
#include <string>  // back(), pop_back()                             

int main()
{
  std::string str ("Optimist!");

  std::cout << str.back() << "\n";
  str.pop_back();

  std::cout << str << "\n";
}

g++ Test.cpp:

Test.cpp: In function ‘int main():
Test.cpp:8:20: error: ‘std::string has no member named ‘back
Test.cpp:9:7: error: ‘std::string has no member named ‘pop_back

g++ -std = С++ 0x Test.cpp:

Test.cpp: In function ‘int main():
Test.cpp:9:7: error: ‘std::string has no member named ‘pop_backk

Как использовать эти функции с помощью g++?

EDIT: использование g++ 4.6.3

  • 2
    Решите это путем обновления вашего компилятора. :) GCC 4.8.1 работает , кажется, вы просто используете более старую версию, которая еще не поддерживает эти функции.
Теги:
string
c++11

1 ответ

2
Лучший ответ

И std::basic_string::pop_back() и std::basic_string::back() были добавлены в С++ 11. Без явного использования стандарта С++ 11 с -std=c++11 вы вообще не сможете использовать эти функции.

Текущая версия GCC - 4.8.2. В некоторых более ранних версиях может не быть реализована одна или обе эти функции. Вы должны обновиться до 4.8.2, если они вам понадобятся.

  • 0
    Спасибо, у вас есть хорошая ссылка о том, как это сделать в Ubuntu 12.04?
  • 1
    Это не совсем правильно. --std=c++0x достаточно для некоторых функций C ++ 11 и стоит попробовать, о чем свидетельствует существование back() в GCC 4.6.3.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню