嗨,这是我的第一篇文章:)
我是C ++编程的新手,并不完全理解字符串引用和指针的实现。我花了一个多小时搜索网络,找出我如何将这两个字符串中的一个转换为“可比较”,但我发现的所有内容都与仅仅比较2个普通字符串,或者是一个常量字符串&和char *,或略有不同的东西。 我已经读过字符串wikipedias以及我想到的所有想法,但我只是不知道发生了什么。
简而言之,我需要使用'<'来比较字符串运营商。例如:“if(foo< bar)std :: cout<<”foo小于bar \ n“;”
我从“http://www.cplusplus.com/reference/string/string/operators/”中理解它的方式 操作符的左侧和rhs都必须是const string&
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字符串&amp;和一个字符串值,它是一个字符串*。
问题是,当我尝试比较一个const字符串&amp;到一个字符串*,我收到一个错误。
我是新手,几乎不了解const字符串&amp;是,为什么我不能将它与字符串*进行比较。
你能否帮我找到一种方法来比较这两个字符串以便我的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)**
{
}
}
}
答案 0 :(得分:0)
根据您的问题,示例代码如下:
std::string test1 = "test1";
std::string test2 = "test2";
const std::string &test3 = test1;
std::string * point_str = &test2;
if (test3 > (*point_str))
{
std::cout << "The test1 is bigger" << std::endl;
}
else
{
std::cout << "The test2 is bigger" << std::endl;
}
字符串*点应该用作(* point)。看看两本优秀的C ++书:有效的C ++和更有效的C ++。