尝试创建指向用户输入的数组(字符串)的指针。
在这里,我在我的类中定义了我的指针和数组:
private:
char userWord[200]; // input word
char * userWordPtr; // Pointer to the beginning of the input word
这是读取信息的函数:
void WordFont::inputWord()
{
cout << "What word would you like to draw?\n"
<< "The useable characters are: A E I O U Y B C D L M N R S T\n" ;
cout << "Please enter your word: ";
cin.get(userWord, 200);
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
userWordPtr = &userWord;
}
用户输入一个单词,我的代码根据单词的字母做一些事情(长 if-else 阶梯)。但是在将 * Ptr 传递给 if-else 阶梯时,当我增加指针的位置时,我无法让 if-else 阶梯识别空 (/0) 字符。使用“&”来引用 char 数组开头的地址时,我也遇到了错误。我无法弄清楚为什么会出现该错误,以及为什么下面的 if-else 梯子不会退出,直到 'i' 到达内存中具有 '/0' 字符的任何随机位置。如果我做一些像输入'AAA'这样简单的事情,它将远远超过'/0'字符所在的第4个位置。
这是循环:
void WordFont::buildOutputArray(char * Ptr)
{
length = 0;
bool switchLooper = true;
int i = 0;
do
{
if(*Ptr + i == 'a' || *Ptr + i == 'A')
constructA();
else if (*Ptr + i == 'e' || *Ptr + i == 'E')
constructE();
else if (*Ptr + i == 'i' || *Ptr + i == 'I')
constructI();
else if (*Ptr + i == 'o' || *Ptr + i == 'O')
constructO();
else if(*Ptr + i == 'u' || *Ptr + i == 'U')
constructU();
else if(*Ptr + i == 'b' || *Ptr + i == 'B')
constructB();
else if(*Ptr + i == 'c' || *Ptr + i == 'C')
constructC();
else if(*Ptr + i == 'd' || *Ptr + i == 'D')
constructD();
else if(*Ptr + i == 'l' || *Ptr + i == 'L')
constructL();
else if(*Ptr + i == 'm' || *Ptr + i == 'M')
constructM();
else if(*Ptr + i == 'n' || *Ptr + i == 'N')
constructN();
else if(*Ptr + i == 'r' || *Ptr + i == 'R')
constructR();
else if(*Ptr + i == 's' || *Ptr + i == 'S')
constructS();
else if(*Ptr + i == 't' || *Ptr + i == 'T')
constructT();
else if(*Ptr + i == '\0')
switchLooper = false;
i++;
}while(switchLooper);
}
这可能是一个简单的新手错误,我相信你会注意到很多其他问题,但我非常感谢任何帮助。
谢谢,汤姆