包含有什么问题,为什么我找不到strlen()

时间:2012-12-04 01:30:23

标签: c++

#include "Q1-VerifyUniqueCharInString.h"
#include <cstring>
#include <stdio.h>
#include <string.h>

using namespace std;


bool isUniqueChar(string str)
{

    int length=strlen(str),i=0;
    bool tab[] = new bool[length];
    if (length > 0xff) {
        return false;
    }
    for (; i<length;++i) {
        if (str[i]) {
            return false;
        }
        tab[str[i]]=true;
    }
    return true;
}

这是我的代码,我使用gcc + xcode ....为什么总是告诉我找不到strlen,我同时使用cstring和string.h ......

2 个答案:

答案 0 :(得分:5)

strlen适用于const char*,而不是string。您可以(而且应该)使用str.length()

答案 1 :(得分:0)

c字符串和c ++字符串lib彼此非常不同,并且不能混合使用。解决这个问题的方法是将字符串视为c字符串:

strlen(str.c_str()); //convert string into char *

c ++ string和内部c字符串,便于移植到c代码和c方法中。

值得注意的是cstringstring.h引用相同的文件,c是用于组织c ++库和c库的c ++方法

#include <cstdio>
#include <cstdlib> //could be stdlib.h, but used to show that this lib is a c lib
#include <csting>  //same as string.h
#include <string>  //c++ string lib