Привет, это мой 1-й пост :)Как сравнить ссылку строки const со строковым указателем?
Я очень новичок в программировании на С ++ и не совсем понимаю реализации ссылок на строки и указателей. Я потратил более часа на поиски сети, чтобы узнать, как я конвертирую одну из этих двух строк, чтобы быть «сопоставимой», но все, что я нашел, было связано либо с сравнением двух нормальных строк, либо с константной строкой & и char *, или что-то немного другое. Я читал строки wikipedias и все, что я думал, чтобы попытаться понять это, но я просто не знаю, что происходит.
Короче говоря, мне нужно сравнить строки, используя оператор '<'. Пример: «если (Foo < бар) станд :: соиЬ < <„Foo меньше, чем бар \ п“;»
Я так понимаю, это от «http://www.cplusplus.com/reference/string/string/operators/» как в левой стороне и правой части оператора должны быть константной
снабжать струной, тетивой и т.п. &bool operator< (const string& lhs, const string& rhs);
bool operator< (const char* lhs, const string& rhs);
bool operator< (const string& lhs, const char* rhs);
в моем коде, у меня есть строковое значение, которое уже константная строка & и значение строка, строка *.
Проблема, когда я пытаюсь сравнить строку const & с строкой *, я получаю сообщение об ошибке.
Я новичок в этом и едва понимаю, что такое const string &, и почему я не могу сравнить его со строкой *.
Не могли бы вы помочь мне найти способ сравнить эти две строки для моей вставки BST?
Вот мой BST класс
class BST
{
public:
BST();
~BST();
void insertContent(const string& word, const string& definition);
void deleteContent(string* word);
const string* getContent(const string& word);
private:
class Node
{
public:
Node(string* word, string* definition)
{left=NULL; right=NULL; m_word=word; m_definition=definition;}
Node* left;
Node* right;
string* m_word;
string* m_definition;
};
Вот функция вставки, где мне нужна помощь, сравнивающие строки
void BST::insertContent(const string& word, const string& definition)
{
Node* ptr = root;
//Node* entry = new Node(word, definition);
if (root == NULL)
{
root = new Node(word, definition);
return;
}
while (ptr != NULL)
{
const string& curwor = ptr->m_word; /*I was thinking of making my own const string& out of ptr->m_word but it didn't work. */
**if (word < ptr->m_word)**
{
}
}
}
http://www.cplusplus.com/reference/string/string/compare/ – Nahum
«const» означает константу. Если вы объявили как «const», его нельзя изменить. Если вы можете изменить его значение, это должна быть переменная. –
Выделить указатель: 'if (word < *(ptr-> m_word))'. Вы можете задать этот вопрос в пяти строках кода. – juanchopanza