Big C ++中的C ++ strlen错误

时间:2013-08-15 18:24:57

标签: c++ string

我一直在研究Big C++中的一些程序,在复制了append.cpp之后,Eclipse在第8行告诉我'strlen' was not declared in this scope。我在网上看了一眼,我想到了是因为我必须包含<cstring>库,但这并没有解决它。怎么了?

append.cpp:

#include <iostream>    

using namespace std;

void append(char s[], int s_maxlength, const char t[])
{
    int i = strlen(s); // error occurs here
    int j = 0;
    while(t[j] != '\0' && i < s_maxlength)
    {
         s[i] = t[j];
         i++;
         j++; 
    }
    //Add zero terminator
    s[i] = '\0';
 }

int main()
{
    const int GREETING_MAXLENGTH = 10;
    char greeting[GREETING_MAXLENGTH + 1] = "Hello";
    char t[] = ", World!";
    append(greeting, GREETING_MAXLENGTH, t);
    cout << greeting << "\n";
    return 0;
 }

1 个答案:

答案 0 :(得分:4)

包含<cstring>标题应该解决(应该已经解决)问题。我的怀疑是正确的:只有Eclipse是愚蠢的,它给你一个误报。

在这种情况下,不要相信IDE!总是尝试编译源文本 - 如果编译器接受它,那么IDE中的静态分析工具是错误的。