网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月16日漏签0天
c++吧 关注:665,826贴子:2,119,647
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 4回复贴,共1页
<<返回c++吧
>0< 加载中...

【求助】构造cstring时出现的问题

  • 只看楼主
  • 收藏

  • 回复
  • 巳魂_殇
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主新手一枚........自己写了个cstring类,用VS调试的时候系统报错如图,帮忙看看怎么回事啊.......具体的代码会在楼下给出来,求轻喷。.


  • 巳魂_殇
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
头文件:
#ifndef LZJSTRING_H
#define LZJSTRING_H
#include <iostream>
#include <istream>
using std::ostream;
using std::istream;
class LZJString
{
public:
LZJString();
LZJString(char *);
~LZJString();
LZJString(LZJString &);
void AddCharAt(int , char);
void getstring();
void write(ostream &ostr);
void putIn(char*);
static int length();
static int capacity();
char at(int);
bool isNotFull();
bool read(istream &istr);
char * showstring();
char* str;
static int end;
static int size;
};
#endif // !"LZJString.h"


2026-11-16 02:15:44
广告
不感兴趣
开通SVIP免广告
  • 巳魂_殇
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
头文件的实现:
#include "stdafx.h"
#include <iostream>
#include <istream>
#include "LZJString.h"
using namespace std;
bool isEndOfLine(char* string)
{
for (int i = 0; i <= 100; i++)
{
if (string[i] == '\0')
{
return true;
}
}
return false;
}
int LZJString::end = 0;
int LZJString::size = 0;
LZJString::LZJString()
{
str = new char[20];
str[0] = '\0';
end = 0;
size = 20;
};
LZJString::LZJString(char* String)
{
char* temp = String;
int i = 0;
for (end = 1; temp[end] != '\0'; end++)
{}
size = end;
size = size / 20;
size = 20 * size + 20;
str = new char [size];
for (int t = 0; t <= end; t++)
{
str[t] = temp[t];
}
};
LZJString::LZJString(LZJString &String)
{
str = new char[String.length()];
str = String.str;
};
LZJString::~LZJString()
{ };
void LZJString::AddCharAt(int place, char addChar)
{
if (end < (size - 1) || end == 0)
{
int i;
str[end + 1] = str[end];
for (i = end ; i > place; i--)
{
str[i] = str[i - 1];
}
str[place - 1] = addChar;
}
else
{
char* temp = str;
str = new char[size + 20];
str = temp;
str[end + 1] = str[end];
int i;
for (i = end ; i > place-1; i--)
{
str[i] = str[i-1];
}
str[place-1] = addChar;
}
end++;
size = end;
size = size / 20;
size = 20 * size + 20;
};
void LZJString::getstring()
{
cout << str << endl;
};
void LZJString::write(ostream & ostr)
{
ostr << str << " " << length() << " " << capacity() << endl;
};
int LZJString::length()
{
return end;
};
int LZJString::capacity()
{
return size;
};
char LZJString::at(int place)
{
if (place <= end&&place >= 0)
{
return *(str + place - 1);
}
else
{
return '0';
}
};
bool LZJString::isNotFull()
{
if (end == size - 1)
return false;
else
return true;
};
bool LZJString::read(istream & istr)
{
char* String = new char[100];
istr >> String;
if (!isEndOfLine(String))
{
cout << "Error : Overflow. " << endl;
return false;
}
else
{
LZJString::LZJString (String);
return true;
}
};
char * LZJString::showstring()
{
return str;
};


  • 巳魂_殇
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主函数(用来测试):
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <istream>
#include <ostream>
#include "LZJString.h"
using namespace std;
using std::ostream;
using std::istream;
void byValue(ostream & ostr, LZJString str);
void byReference(LZJString & str);
int main()
{
ifstream input;
ofstream outputFile1;
ofstream outputFile2;
LZJString st;
input.open("infile.txt");
outputFile1.open("outfile1.txt");
outputFile2.open("outfile2.txt");
do
{
st.read(input);
byValue(outputFile1,st);
byReference(st);
st.write(outputFile2);
} while (!input.eof());
return 0;
}
void byValue(ostream & ostr, LZJString st)
{
st.AddCharAt('~', 2);
st.write(ostr);
}
void byReference(LZJString & str)
{
str.AddCharAt('+', 6);
}


  • 落木袭冷
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示