C++ 过载操作员>&燃气轮机;在自制课堂上';字符串';C++;
我正在创建类“String” 但是我遇到了运算符>>重载的问题 我试着这样做:C++ 过载操作员>&燃气轮机;在自制课堂上';字符串';C++;,c++,class,overloading,operator-keyword,C++,Class,Overloading,Operator Keyword,我正在创建类“String” 但是我遇到了运算符>>重载的问题 我试着这样做: istream& operator >> (istream& input, String& inputStr) { char str[] = ""; input >> str; inputStr.size = strlen(str); inputStr.str = new char[inputStr.size]; for (int
istream& operator >> (istream& input, String& inputStr)
{
char str[] = "";
input >> str;
inputStr.size = strlen(str);
inputStr.str = new char[inputStr.size];
for (int i = 0; i < inputStr.size; i++)
{
inputStr.str[i] = str[i];
}
return input;
}
istream&operator>>(istream&input、String&inputStr)
{
字符str[]=“”;
输入>>str;
inputStr.size=strlen(str);
inputStr.str=新字符[inputStr.size];
对于(int i=0;i
但它不起作用=(
你能帮我让这个接线员超负荷工作吗
下面是一个代码:
#pragma once
#include<iostream>
using namespace std;
class String
{
private:
int size;
char* str;
public:
String();
~String();
String(char* arr);
String(const String& copy);
int sizeStr();
friend ostream& operator << (ostream& output, const String& outputStr);
friend istream& operator >> (istream& input, String& inputStr);
};
String::String()
{
this->size = 0;
this->str = nullptr;
}
String::String(char* str)
{
this->size = strlen(str);
this->str = new char[size];
for (int i = 0; i < size; i++)
{
this->str[i] = str[i];
}
}
String::~String()
{
delete[] str;
}
String::String(const String& copy)
{
if (this != ©)
{
this->size = copy.size;
this->str = new char[size];
for (int i = 0; i < size; i++)
{
this->str[i] = copy.str[i];
}
}
}
int String::sizeStr()
{
return this->size;
}
ostream& operator << (ostream& output, const String& outputStr)
{
for (int i = 0; i < outputStr.size; i++)
{
output << outputStr.str[i];
}
return output;
}
istream& operator >> (istream& input, String& inputStr)
{
return input;
}
#pragma一次
#包括
使用名称空间std;
类字符串
{
私人:
整数大小;
char*str;
公众:
字符串();
~String();
字符串(char*arr);
字符串(常量字符串和副本);
int-sizest();
friend ostream&operator>(istream&input、String&inputStr);
};
String::String()
{
这个->大小=0;
这->str=nullptr;
}
字符串::字符串(char*str)
{
此->大小=strlen(str);
此->str=新字符[大小];
对于(int i=0;istr[i]=str[i];
}
}
字符串::~String()
{
删除[]str;
}
字符串::字符串(常量字符串和副本)
{
如果(此!=&复制)
{
此->大小=copy.size;
此->str=新字符[大小];
对于(int i=0;istr[i]=copy.str[i];
}
}
}
int字符串::sizeStr()
{
返回此->大小;
}
ostream和运算符(istream和input、String和inputStr)
{
返回输入;
}
我期待您的帮助。
char str[]=”;
为您提供一个由一个字符组成的数组。它不会自动调整大小。因此,我需要做什么?在您使用的语言中,似乎已经有一个强大的内置字符串类型char[]
。它显然可以根据需要调整自身大小并管理自己的内存。为什么要创建一个类?我不能使用标准字符串。这是此任务的一个条件。这是一个非常有趣的问题。您不知道字符串提前有多大,所以无法预先确定缓冲区的大小。看起来您必须猜测缓冲区的合理大小并读取into一个字符一个字符地调整缓冲区,直到找到空白分隔符,并在缓冲区填满时调整其大小。