C++ 左括号';(';在';foo.cpp';处找到)未正确匹配

C++ 左括号';(';在';foo.cpp';处找到)未正确匹配,c++,compiler-errors,C++,Compiler Errors,下面的注释中指出了错误的位置。请帮助修复此问题 #include<iostream.h> #include<string.h> #include<stdlib.h> class String { private: enum{sz=80}; char str[sz]; public: String() { strcpy(str,""); } String (char s[]) {

下面的注释中指出了错误的位置。请帮助修复此问题

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class String
{
private:
    enum{sz=80};
    char str[sz];
public:
    String()
    {
        strcpy(str,"");
    }

    String (char s[])
    {
        strcpy(str,s);
    }

    void display() const
    {
        cout<<str;
    }
    String operator +(String ss) const
    {
        String temp;
        if(strlen(str) + (strlen(ss.str) < sz)
        {
            strcpy(temp.str,str);
            strcat(temp.str , ss.str);
        } // Error is reported here!
        else
        {
            cout<<"\nstring overflow";
            exit(1);
        }
        return temp;
    }

};
int main()
{
    String s1="\nMerry christmas";
    String s2="happy new year";
    String s3;

    s1.display();
    s2.display();
    s3.display();

    s3=s1+s2;
    s3.display();
    cout<<endl;
    return 0;
}
#包括
#包括
#包括
类字符串
{
私人:
枚举{sz=80};
char-str[sz];
公众:
字符串()
{
strcpy(str,“”);
}
字符串(字符s[])
{
strcpy(str,s);
}
void display()常量
{

cout此行末尾缺少右括号:

if(strlen(str) + (strlen(ss.str) < sz)
if(strlen(str)+(strlen(ss.str)
此处发生错误:

if(strlen(str) + (strlen(ss.str) < sz)
if(strlen(str)+(strlen(ss.str)
这大概应该是:

if (strlen(str) + strlen(ss.str) < sz)
if(strlen(str)+strlen(ss.str)
if(strlen(str)+(strlen(ss.str)
应该是

if(strlen(str) + strlen(ss.str) < sz)
if(strlen(str)+strlen(ss.str)
请注意,在原始行中有4个
,但只有3个
。这些需要匹配,但它们不匹配。因为第二个
strlen()之前的
)是多余的(不需要将
strlen(ss.str)
括在括号中),您可以删除它

还有。请注意,我必须将ideone的
#include
s从
string.h
更改为
cstring
。无论如何,这是首选。我还必须添加
使用名称空间std;
,因为您的代码没有在需要时明确使用
std
名称空间,例如使用
cout
。您也应该这样做


编译器错误向下指向4行的原因是,在这一行中,它意识到“哦,不,这里有一个问题,我永远无法解析此代码!”GCC在错误报告方面非常糟糕,但它是一个编译器(例如,clang)这样做会更好,因为它会回溯到错误的根本原因所在的适当行,甚至可能会建议您进行修复。

您使用什么来编辑源代码?一个好的编辑器通常会在视觉上为您指出正确的方向。您确实知道标准库
string
类,对吗?
if(strlen(str) + strlen(ss.str) < sz)