Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 试图计算my“的ASCII码和;“先生”;(字符串)类 #包括 #包括 使用名称空间std; 班长{ int lung;//lenght爵士 char*sirul;//指向第一个字符形式sir的指针 公众: sir(const char*);//构造函数,用于测试 ~sir();//析构函数 字符运算符[](int索引); int cod(); }; int sir::cod() { u先生=*这个; char*s=sirul; int i,总和,l=肺; 如果(肺=0) cout_C++_String_Class_Sum_Ascii - Fatal编程技术网

C++ 试图计算my“的ASCII码和;“先生”;(字符串)类 #包括 #包括 使用名称空间std; 班长{ int lung;//lenght爵士 char*sirul;//指向第一个字符形式sir的指针 公众: sir(const char*);//构造函数,用于测试 ~sir();//析构函数 字符运算符[](int索引); int cod(); }; int sir::cod() { u先生=*这个; char*s=sirul; int i,总和,l=肺; 如果(肺=0) cout

C++ 试图计算my“的ASCII码和;“先生”;(字符串)类 #包括 #包括 使用名称空间std; 班长{ int lung;//lenght爵士 char*sirul;//指向第一个字符形式sir的指针 公众: sir(const char*);//构造函数,用于测试 ~sir();//析构函数 字符运算符[](int索引); int cod(); }; int sir::cod() { u先生=*这个; char*s=sirul; int i,总和,l=肺; 如果(肺=0) cout,c++,string,class,sum,ascii,C++,String,Class,Sum,Ascii,代码中几乎没有问题: 1.首先: 您有一个不匹配的新[]/删除呼叫此处。将删除sirul替换为删除[]sirul 2.秒: 在sir::cod中,您实际上是通过执行以下操作来复制对象 #include <iostream> #include <string.h> using namespace std; class sir{ int lung; //sir lenght char* sirul; //pointer to the first charact

代码中几乎没有问题:

1.首先:

您有一个不匹配的
新[]
/
删除
呼叫此处。将
删除sirul
替换为
删除[]sirul

2.秒:

sir::cod
中,您实际上是通过执行以下操作来复制对象

#include <iostream>
#include <string.h>


using namespace std;

class sir{
  int lung; //sir lenght
  char* sirul;  //pointer to the first character form sir
  public:
    sir(const char*);//constructor,for test
    ~sir();// destructor
    char operator[](int index);
    int cod();


};

int sir::cod()
    {
        sir u=*this;
        char* s=sirul;
        int i,sum,l=lung;
        if (lung=0)
            cout<<"ASCII code sum is 0";
        else
        {
            for(i=0; i<l; i++)
                {
                    sum=sum+int(s[i]);
                }
        }
        return sum;
    }

sir::sir(const char* siroriginal)
{
  int lungime=strlen(siroriginal);//string length
  lung = lungime+1;
  sirul = new char[lung];
  strcpy(sirul,siroriginal);
}

sir::~sir(){
  delete sirul;
}

char sir::operator[](int index){
  if(index<lung && index >=0)return sirul[index];//verificare minima, verific daca este in limite
  return '\0';
}

int main(){



  cout<<"--------------test for sir-----------------\n";
  sir s("un sir meserias");
  char c=s[1];
  cout<<c<<"\n";
    cout<<s.cod();



}
因为您根本没有使用
u
,所以应该删除这一行。它是双自由的来源。在
cod
函数的末尾,
u
将被销毁,您的内部指针
sirul
将被删除。但是由于您没有定义任何复制运算符,编译器将为您和y生成它您将在两个
sir
实例之间共享一个指针。 当第二个实例被销毁时,
sirul
再次被删除。导致错误

3.第三:

接下来,在
cod
中,您忘记将
sum
初始化为0。这就是为什么您会得到不好的结果

4.第四:


cod
中,您正在执行
if(sum=0)
操作。您缺少此处的
=

尝试将调试器附加到正在运行的程序中,您将学到很多东西!:)我不太知道如何执行此操作…谢谢,现在它看起来是如何工作的“cod”:int sir::cod(){int I,sum=0;if(lung==0)cout
sir u=*this;