我一直在盯着这一段时间而且我对我for
循环的情况感到困惑。
首先,我让用户输入一个使用cin.getline()
const int STRING_MAX = 1001;
char* inputString = nullptr;
inputString = new char[STRING_MAX];
cin.getline(inputString, STRING_MAX, '\n');
如果有人想知道..我没有填满缓冲区(无论如何都不重要)。我只输入了大约25个字符。
下一个inputString
按值传递给Palindrome class
成员函数
word(char* source)
这就是我目前正在尝试的功能:
bool Palindrome::word(char* source) {
for (char* iterator = source; iterator != '\0'; iterator++)
cout << *iterator << endl;
}
我实际上做得更多,但此刻,我将代码缩减为您在上面看到的内容,由于某种原因,我不明白,循环超出了char* array
<的范围/ p>
有人可以帮我理解这里发生的事情吗?
顺便说一句,我很清楚C ++中的字符串类,但是,对于这个赋值(教师希望我们使用指针以及new和delete操作符)。
答案 0 :(得分:3)
iterator != '\0'
这会测试iterator
是否为空指针。情况永远不会如此,这不是你真正想要的。
您的代码不正确,但恰好是有效的代码,因为'\0'
是整数值零的词法表示,因此它恰好是一个空指针常量。 / p>
要测试iterator
是否指向空终止符,您需要使用*iterator != '\0'
(或只测试*iterator
,因为整数值为0的计算结果为false。)