用c++实现串的功能,但老是出现error C2228: left of '.StringLength' must have class/struct/u错误!

CEL1 2017-11-02 10:31:37
代码如下:
#include<iostream>
#include<string>
#define Maxsize 50
using namespace std;

/************************************/

class String//String类
{
public:
String();//构造函数 (进行初始化)
~String();//析构函数 (回收处理)
void CreateString();//创建串
void ShowString();//显示串
void Modify(int place_1,int place_2,char str2[20]);//修改串
void Insert(int place_3,char str3[20]);//插入串
void Delete(int place_4,int place_5);//删除子串
void FindString(char str4[20]);//查找串
int StringLength();// 串长
private:
char *Str;
int Length;
};

/************************************/

String::String()
{
Str=new char[Maxsize];
}

/************************************/

String::~String()//析构函数 (回收处理)
{
delete []Str;
cout<<"该串已经被删除"<<endl;
}

/************************************/

void String::CreateString()//创建串
{
int i=0;
char ch;
while(ch=getchar()!=EOF)
{
if(ch!=13)
cin.get(Str[i]);
i++;
}
Length=i;
}

/************************************/

void String::ShowString()
{
int i;
if(Length<=0)
cout<<"串为空!"<<endl;
cout<<"当前顺序串为:";
for(i=0;i<Length;i++)
cout<<Str[i];
cout<<endl;
}

/************************************/

void String::Modify(int place_1,int place_2,char str2[20])
{
int i;
i=place_2-place_1;
Str.replace(place_1,i,str2[20]);
}

/************************************/

void String::Insert(int place_3,char str3[20])
{
Str.insert(place_3,str3[20]);
}

/************************************/

void String::Delete(int place_4,int place_5)
{
int i;
i=place_5-place_4;
Str.erase(place_4,i);

}

/************************************/

void String::FindString(char str4[20])
{
int i,f;
f=Str.find(str4[20]);
if(f<Length)
cout<<"已找到!位置为:"<<f<<endl;
else
cout<<"未找到!"<<endl;
}

/************************************/

int String::StringLength()
{
return Length;
}

/************************************/

void Menu()
{
system("cls");
cout<<"顺序串基本功能菜单"<<endl;
cout<<"=========="<<endl;
cout<<"1.建立顺序串(仅限单行的字符串,建议不用汉字。)"<<endl;
cout<<"2.显示串"<<endl;
cout<<"3.修改串"<<endl;
cout<<"4.插入串"<<endl;
cout<<"5.删除串"<<endl;
cout<<"6.查找串"<<endl;
cout<<"7.求串长度"<<endl;
cout<<"8.结束程序"<<endl;
cout<<"=========="<<endl;
}

/************************************/
//place_1、place_2用于修改
//place_3用于插入
//place_4用于删除
//str2(修改)、str3(插入)、str4(查找)
int main()
{
int place_1,place_2,place_3,place_4,place_5;
char str2[20],str3[20],str4[20];
int cho;
String string(char str[20],int length);
while(1)
{
Menu();
do
{ cout<<"请输入选择:";
cin>>cho;
}while(cho<1||cho>8);
switch(cho)
{
case 1:
cout<<"请输入需要创建的字符串并以Ctrl+Z结束!"<<endl;
string.CreateString();
cout<<"该字符创建成功!"<<endl;
break;

case 2:
string.ShowString();
break;

case 3:
cout<<"请输入需要修改串的初位置:";
cin>>place_1;
cout<<endl;
cout<<"请输入需要修改串的末位置:";
cin>>place_2;
cout<<"请输入想要修改成的串:";
cin>>str2;
string.Modify(place_1,place_2,str2[20]);
cout<<"插入成功!"<<endl;
break;

case 4:
cout<<"请输入插入的位置:";
cin>>place_3;
cout<<endl;
cout<<"请输入插入的子串:";
cin>>str3[20];
string.Insert(place_3,str3[20]);
break;

case 5:
cout<<"请输入删除的初位置:";
cin>>place_4;
cout<<endl;
cout<<"请输入删除的末位置:";
cin>>place_5;
string.Delete(place_4,place_5);
cout<<"删除成功!"<<endl;
break;

case 6:
string.FindString(str4[20]);
break;

case 7:
cout<<"当前串的长度为:"<<string.StringLength()<<endl;
break;

case 8:
return 0;

}
system("pause");
cin.get(); //从指定的输入流中提取一个字符,防止屏幕一闪而过
}
}




...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-11-04
  • 打赏
  • 举报
回复
把报的错误。贴上来。。看看
CEL1 2017-11-03
  • 打赏
  • 举报
回复
还是那个样子!
ooolinux 2017-11-03
  • 打赏
  • 举报
回复
代码中所有的string都改成aString 试试,注意大小写匹配,不要把String也改了。
CEL1 2017-11-03
  • 打赏
  • 举报
回复
我换个对象名也是一样的报错,可能真正的问题还不是这个吧!
ooolinux 2017-11-03
  • 打赏
  • 举报
回复
String aString(char str[20],int length); string是标准库的类,名字冲突了。
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
基于GPT-SoVITS的视频剪辑快捷配音工具 GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧