палиндром.cpp:9:26: ошибка: «размер» не был объявлен в этой области

#c #string #scope #size #palindrome

Вопрос:

я написал код для проверки палиндрома, но он выдает ошибку в командной строке и в онлайн-компиляторе, но я выполнил код в другом онлайн-компиляторе, где он успешно скомпилировался и дал желаемый результат. ошибка: палиндром.cpp:9:26: ошибка: «размер» не был объявлен в этой области

 #include<iostream>
using namespace std;
int main()
{
    string num_str = "";
    cin >> num_str;
    string new_str = "";

    for(int x = (size(num_str)-1); x >= 0; x--){
        new_str  = num_str[x];
    }

    cout << (num_str == new_str ? "palindrome" : "Non-palindrome");

    return 0;
}``` 
 

Комментарии:

1. size не объявляется. Чего вы ожидаете от size(num_str) этого ? Ты это имел в виду num_str.size() ?

2. Недостающий #include <string>

Ответ №1:

Чтобы получить размер строки, вы используете функцию-член. Измените эту строку:

 for(int x = (size(num_str)-1); ... )
 

Для

 for(int x = num_str.size()-1; ... )
 

Кроме того, вам, вероятно, следует включить :

 #include <iostream>
#include <string>
// ...
 

Комментарии:

1. Это прекрасно сработало без добавления # include <string> .

2. Вероятно, это связано с тем, что iostream включает строку. Однако, поскольку это отличается от компилятора к компилятору, рекомендуется соблюдать осторожность.