我正在寫一個程序,我創建自己的字符串類。該程序應該指示用戶寫一個句子,複製輸入,然後顯示它包含的字符數。解決:我需要幫助創建一個簡單的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