Я пытаюсь использовать функции члена 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
И std::basic_string::pop_back()
и std::basic_string::back()
были добавлены в С++ 11. Без явного использования стандарта С++ 11 с -std=c++11
вы вообще не сможете использовать эти функции.
Текущая версия GCC - 4.8.2. В некоторых более ранних версиях может не быть реализована одна или обе эти функции. Вы должны обновиться до 4.8.2, если они вам понадобятся.
--std=c++0x
достаточно для некоторых функций C ++ 11 и стоит попробовать, о чем свидетельствует существование back()
в GCC 4.6.3.