字符数组而不是字符串
array of chars instead of string
大家好!我对字符串和字符数组有一些问题。我正在写一个关于基于B-树的数据库的项目,其中键是一些类,类似于这样:
string name;
double mark;
int phone_number;
所以,我实现了插入功能,但在搜索功能上我有一些问题,这里是搜索功能:
node* btree::search(string x)
{
node* p = root;
int i, j;
j = 0;
while( p )
{
cout << "for iter: " << j << p->noofkeys << endl;
for( i = 0; i < p->noofkeys; i++ )
if(x == p->data[i].key.getName() )
return(p);
p = p->nextindex(x);
}
return NULL;
}
和下一个索引:
node* node::nextindex(string x)
{
int i;
if( x < data[0].key.getName())
return first;
for( i=0; i < noofkeys; i++ ) {
if( x < data[i].key.getName() || x == data[i].key.getName() )
return data[i-1].next;
}
return data[i-1].next;
}
我不确定,但我认为问题来自于露营的绳子,但我不知道为什么?是不是它们在内存中分配了不同的空间,实际上是不同的对象?用字符数组代替字符串好吗?
-
我猜问题可能是
x == p->data[i].key.getName()
。我需要更多地了解你的项目才能确定。 -
与其玩20个问题,我强烈建议您熟悉编译器的调试器并逐步完成代码。花在学习调试器上的任何时间都是明智的投资,IMHO。。。
-
下面是一个示例,说明std::string.compare():
样本输出:
p=abc
p: NOT FOUND
示例代码:
#include <stdio.h>
#include <string.h>
#include <string>
class node {
char m_name[80];
public:
node(char *name);
char * getName ();
node * search(std::string x);
};
node::node(char * name) {
strcpy (m_name, name);
}
char *
node::getName() {
return m_name;
}
node *
node::search(std::string x) {
if (x.compare(getName()) == 0)
return this;
else
return NULL;
}
void print_result(node *p) {
if (p)
printf ("p=%sn", p->getName());
else
printf ("p: NOT FOUNDn");
}
int
main (int argc, char *argv[]) {
// Create a node object
node my_node("abc");
// Search: should match
node * p = my_node.search("abc");
print_result(p);
// Search again: should *not* match
p = my_node.search("123");
print_result(p);
return 0;
}
"希望能有所帮助!
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组