如何将字符串放入char堆栈并将其打印出来?C++

ros*_*ose 3 c++

我将一个字符串传递给我的函数,该函数应该使用该字符串将各个字符放入堆栈中.然后堆栈应该将其吐出(因为它是一个堆栈,它应该被反转).例如,如果我的字符串是hello,它应该打印"olleh".但相反,我得到了ooooo.我认为这与我每次设置ch等于不同的角色这一事实有关,但我不确定如何以不同的方式输入这些角色.

void Stack::function2reverse(string myString) {

    int countItIt = 0;
    int sizeOfString = myString.size();
    char Ch ;
    for (int i= 0; i< sizeOfString; x++)
    {
        Ch = myString[x];
        stack.push(Ch);
        countIt ++;

    }

    while (countIt != 0)
    {    
        cout << Ch;
        stack.pop();
        countIt --;
    }
}
Run Code Online (Sandbox Code Playgroud)

BoB*_*ish 7

cout << Ch;- 每次打印相同的字符(输入的最后一个字符,所以'o').

相反,打印堆栈中的顶部字符:std::cout << stack.top().

std::stack跟踪自己的大小,所以你也不必担心.然后你可以用以下代码替换你的打印循环

while (!stack.empty()) {
    std::cout << stack.top();
    stack.pop();
}
Run Code Online (Sandbox Code Playgroud)

当然,标准库std::reverse无论如何都提供了一个功能,所以如果这不仅仅是一个学习的练习std::stack,你可以使用它(我可以想到其他几个要做的事情,具体取决于你想要的东西)实现):

std::string s = "hello";
std::reverse(std::begin(s), std::end(s));
// s now contains "olleh"
Run Code Online (Sandbox Code Playgroud)

您可能还想了解为什么using namespace std;是不好的做法.