getting the length of an array using strlen in g++ compiler

KItis picture KItis · Feb 13, 2010 · Viewed 9.5k times · Source

could someone explain why i am getting this error when i am compiling the source using following g++ compiler

#include <cstdio>
#include <string>

using namespace std;

int main()
{
    char source_language[50];


    scanf("%16s\n",source_language);

    int length = sizeof(source_language);
    int sizeofchar = strlen(source_language);
    printf("%d\n",sizeofchar);
}

this gives me following error

test.cpp: In function ‘int main()’:

test.cpp:31: error: ‘strlen’ was not declared in this scope

when i change the #include <string> into #include <string.h> or #include<cstring> , it works fine, i need to figure out what is the difference using #include<string> and #include<string.h> . really appreciate any help

Answer

AnT picture AnT · Feb 13, 2010

You are trying to use strlen function, which is declared in string.h (or, as a member of namespace std in cstring). So, in order to use strlen you should include one of those two headers.

The #include <string> variant does not work simply because string is a completely unrelated C++-specific header file which has absolutely nothing to do with C standard library string functions. What made you expect that it will work?