gpt4 book ai didi

c++ - cpp 中使用 stack 的 stack.top() 和 stack.pop() 的返回类型是什么?

转载 作者:行者123 更新时间:2023-11-28 00:23:18 28 4
gpt4 key购买 nike

我正在尝试使用堆栈的 printf() 打印 stack.top() 的返回值,但它给出的格式不匹配。代码如下:

int main(){

stack <string> cards;
char *ch1;
char ch2[20];
cards.push("Ace");
cards.push("King");
cards.push("Queen");
cards.push("Jack");
printf("Number of cards : %ld \n", cards.size());

ch1 = cards.top(); // As sizeof(cards.top()) is 8. error of type conversion
strcpy(ch2,cards.top()); // cannot convert ‘std::basic_string<char>’ to ‘const char*’

printf("Top of the Stack : %s \n", ch);
return 0
}

在所有示例中,我都看到它是使用“cout”打印的。

最佳答案

A std::string是不同于 char* 的类型,以下将不起作用:

ch1 = cards.top(); // top() returns a string, not a char*

我建议为您的代码使用 std::string:

int main(){

stack <string> cards;
string ch1; // std::strings
string ch2;
...

ch1 = cards.top(); // Correct

printf("Top of the Stack : %s \n", ch1.c_str()); // c_str() needed
return 0;
}

还要注意使用 printf 需要一个 char* 类型,你可以用 std::string::c_str() 得到一个,或者(甚至更好)您可以首先使用 cout:

std::cout << "Top of the Stack : " << ch1;

因此我建议做如下事情:

#include <iostream>
#include <stack>
#include <string>

int main() {
std::stack <std::string> cards;
std::string ch1;

cards.push("Ace");
cards.push("King");
cards.push("Queen");
cards.push("Jack in the Jack");

std::cout << "Number of cards : " << cards.size() << std::endl;

ch1 = cards.top(); // Get the top card

std::cout << "Top of the Stack : " << ch1;
}

Example

关于c++ - cpp 中使用 stack<string> 的 stack.top() 和 stack.pop() 的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com