c ++将char值(通过使用堆栈弹出)分配给char *

时间:2015-11-05 05:17:47

标签: c++ char

我试图通过使用堆栈来反转char *。

stack<char> scrabble;
char* str = "apple";

while(*str)
{
    scrabble.push(*str);
    str++;
    count++;
}

while(!scrabble.empty())
{
     // *str = scrabble.top();
     // str++;
     scrabble.pop();
}

在第二个While循环中,我不确定如何将堆栈顶部的每个字符分配给char * str。

2 个答案:

答案 0 :(得分:6)

  1. 使用

    定义字符串时
    char* str = "apple";
    

    你不应该改变字符串的值。更改此类字符串会导致未定义的行为。相反,使用:

    char str[] = "apple";
    
  2. 在while循环中,使用索引访问数组而不是递增str

    int i = 0;
    while(str[i])
    {
        scrabble.push(str[i]);
        i++;
        count++;
    }
    
    i = 0;
    while(!scrabble.empty())
    {
       str[i] = scrabble.top();
       i++;
       scrabble.pop();
    }
    

答案 1 :(得分:1)

如果您愿意,也可以迭代指向char[]的指针

char str[] = "apple";

char* str_p = str;
int count = 0;

while(*str_p)
{
    scrabble.push(*str_p);
    str_p++;
    count++;
}

// Set str_p back to the beginning of the allocated char[]
str_p = str;

while(!scrabble.empty())
{
     *str_p = scrabble.top();
     str_p++;
     scrabble.pop();
}