c ++中的自定义字符串练习

时间:2011-01-18 02:18:53

标签: c++ string visual-c++

我有一个使用字符数组的自定义字符串类

class MyString
{

private:
int length; 
char *chars; 

public:
MyString(const char* input)
{
    length = 0; 
    while (input[length] != '\0')
        ++length;

    chars = new char[length + 1];

    for (int j = 0; j < length; j++)
        chars[j] = input[j];
}  

然而,当我使用带有简单输出的这个类时,我在控制台中得到一个奇怪的结果:

MyString newStr = "Test";
cout << newStr; 

在控制台中给我这个输出:

Test═²²²²½½½½½½½½■ε■ε■ε■

这是使用Visual Studio 2010 Win32控制台应用程序。我真的不太了解c ++,这是我第一次尝试它。

3 个答案:

答案 0 :(得分:2)

你忘了把\0放在chars []的末尾。 \0是必须放在char序列末尾的字符。否则,您的程序将输出一些随机内容(数组在内存中的位),直到找到\0

答案 1 :(得分:2)

input复制到chars的循环不包括NUL终止符。将循环条件更改为j <= length,它应该可以正常工作。

答案 2 :(得分:1)

我建议你做几件事:

  1. 你不是空终止你的字符[]
  2. 你需要重载&lt;&lt;运营商。请访问:http://www.fredosaurus.com/notes-cpp/oop-friends/overload-io.html获取示例。