我正在写一个程序,我创建自己的字符串类。该程序应该指示用户写一个句子,复制输入,然后显示它包含的字符数。解决:我需要帮助创建一个简单的C++字符串类
尽管它构建和编译(使用Visual Studio Express 2013),但它会复制用户被指示写下的句子,而不显示字符数量,然后崩溃。
我猜是与如何动态分配内存或如何*功能之间传递*字符和_String有关。但是,如何解决这个问题或改进我的代码会有帮助。
页眉:STRING.H
class String
{
private:
char *characters[50]; // 50 is just a placeholder to get it to work
int size;
public:
// Constructors and Destructors
String();
String(char*);
~String();
// Other functions
void stringAssign(char*);
void printString(char*);
int stringSize(char*) const;
};
实现:String.ccp
#include "String.h"
#include <iostream>
#include <cstring>
String::String()
{
size = 0;
* characters = 0;
}
String::String(char* _String)
{
size = stringSize(*characters + 1);
_String = new char[size];
}
String::~String()
{
delete [] *characters;
}
void String::stringAssign(char* _String)
{
_String = characters[size];
}
void String::printString(char* _String)
{
for (int i = 0; _String[i] != '\0'; i++)
std::cout << _String[i];
}
int String::stringSize(char* _String) const
{
int size;
size = strlen(*characters);
return size;
}
测试:Main.ccp
#include "String.h"
#include <iostream>
int main()
{
char string[50];
String s;
std::cout << "Enter a sentence that is less than 50 characters\n\n";
std::cin.getline(string, 50);
s.printString(string);
std::cout << s.stringSize(string);
return 0;
}
更新:
我得到了程序的工作。从字面上看,我所做的只是在执行过程中用_String
取代了两个*character
参数。我知道这与函数传递有关,我确实得到了一些帮助。但有一个人没有提供有用的信息(并且实际上侮辱了我),并且都表示“有太多事情需要解决”。对我必须解决的“很多事情”的一些阐述会很好。
[我有一个梦!](http://dev-jungle.blogspot.de/2015/02/i-have-dream-im-dreaming-of-so-called-c.html) – 2015-02-11 20:28:40
你有没有尝试先阅读关于C++的一些信息?这是一种语言,试图通过实验学习是一个可怕的想法,原因有几个...... – 6502 2015-02-11 20:30:47
我认为你可能需要从基础知识入手,找到一本关于C++的优秀教程,书籍或课程。 – crashmstr 2015-02-11 20:36:56