我正在编写一个程序来使用堆栈反转字符串。 我的代码中出现2个错误。 1.没有运算符>>匹配操作数2.在行Reverse(string)上; 错误说不允许使用(字符串)类型名称。 知道为什么吗?

    #include <iostream>
#include <string.h>
#include <stack>        
using namespace std;

void Reverse(char);

int main()
{
    char object;

    cout << "Please enter a line of text.\n";
    cin >> object;

    char * point = new char[object.length() + 1];
    strcpy(point, object.c_str());
    Reverse(point);

    Reverse(point);

    printf(" %s", object);

    system("pause");

    return 0;


}

void Reverse(char *p)
{
    stack<char> S;


    for (int i = 0; i<strlen(p); i++)
        S.push(p[i]);


    for (int i = 0; i<strlen(p); i++)
    {
        p[i] = S.top();
        S.pop();
    }
}

更新的代码:cin >>对象上的错误说初始问题没有运算符与操作数匹配

#include <iostream>
#include <string.h>
#include <stack>        
using namespace std;

void Reverse(string);

int main()
{
    string object;

    cout << "Please enter a line of text.\n";
    cin >> object;

    char * point = new char[object.length() + 1];
    strcpy(point, object.c_str());

    Reverse(point);

    printf(" %s", point);

    system("pause");

    return 0;


}

void Reverse(char *p)
{
    stack<char> S;


    for (int i = 0; i<strlen(p); i++)
        S.push(p[i]);


    for (int i = 0; i<strlen(p); i++)
    {
        p[i] = S.top();
        S.pop();
    }
}

我收到错误strcpy_s没有2个参数。

#include <iostream>
#include <cstring>
#include <string>
#include <stack>        
using namespace std;

void Reverse(char *p)
{
    stack<char> S;


    for (int i = 0; i<strlen(p); i++)
        S.push(p[i]);


    for (int i = 0; i<strlen(p); i++)
    {
        p[i] = S.top();
        S.pop();
    }
}

int main()
{
    string object;

    cout << "Please enter a line of text.\n";
    cin >> object;

    char * point = new char[object.length() + 1];
    strcpy_s(point, object.c_str());

    Reverse(point);

    printf(" %s", point);

    system("pause");

    return 0;

}

#1楼 票数:1

char * point = new char[object.length()+1];//+1 for the null terminator 
strcpy(point, object.c_str());
Reverse(point);
printf("%s",point);

为点分配空间,然后复制http://en.cppreference.com/w/cpp/string/byte/strcpy ,您正在像这样调用Reverse Reverse(char)您需要使用char变量的名称来调用它Reverse(point); 由于我们分配了空间,因此我们需要在使用完毕后将其删除。

#2楼 票数:-1

请检查以下修改后的代码。 我现在可以反转输入字符串。

#include <iostream>
#include <string>
#include <stack>        
using namespace std;

void Reverse(char *p)
{
    stack<char> S;


    for (int i = 0; i<strlen(p); i++)
        S.push(p[i]);


    for (int i = 0; i<strlen(p); i++)
    {
        p[i] = S.top();
        S.pop();
    }
}

int main()
{
    string object;

    cout << "Please enter a line of text.\n";
    cin >> object;

    char * point = new char[object.length() + 1];
    strcpy(point, object.c_str());

    Reverse(point);

    printf(" %s", point);

    system("pause");

    return 0;   

}

  ask by CVYC CVYC translate from so

未解决问题?本站智能推荐:

1回复

使用运算符[]访问模板堆栈

我正在使用数组构建堆栈(我的老师不会让我使用std容器),但我被卡住了。 即使我重新定义了访问运算符[] ,当我按下按钮时,程序也会突然停止。 (出于可读性考虑,我同时实现了复制构造函数,operator =和destroyer,bur,我省略了这些方法)。 我的主要内容很简单:
1回复

C++-模板类堆栈实现中的反向函数

这是我使用具有结构类型节点和类类型堆栈的模板的堆栈实现: Stack.h 这是main.cpp: 问题是reverse()导致程序崩溃,我猜“ top_ptr = new_stack.top_ptr”是错误的,但是它使编译和执行失败了。 有人可以帮我解决这个问题吗?
2回复

C++使用另外两个堆栈反转堆栈

我正在尝试使用其他两个堆栈(S1和S2)来反转堆栈(S)。 这是我正在尝试的代码: 这是我每次从内部push调用pop时遇到的错误(x3)。 -stack.cc:14:11:错误:对类型'const value_type'(aka'const int')的引用无法绑定到类型为'void'
2回复

(C++)使用堆栈反转字符串?

我正在尝试使用堆栈来反转字符串。 它正确地反转了字符串,但是当我达到0时,for循环崩溃。我收到“ 字符串下标超出范围 ”错误。 当前,for循环仅递减为1。如何获取并推送它并显示s1 [0]? 这是主要代码: 这是头文件: 这是堆栈实现(模板文件): 我想将for循环更改为
1回复

使用堆栈反转txt文档

好的,所以我正在编写一个相对简单的程序,该程序将从txt文档中提取字符,将其从堆栈中弹出,然后将它们保存到另一个文件中,但顺序相反,例如: 你好! !ereht olleh 我有一些代码,并且已经对其进行了调整,但是它无法正确执行。 编辑:对不起,我忘了最重要的部分..问题。
1回复

C++:使用堆栈反转文本文件中的行

到目前为止,我有以下代码: 我的问题是,为什么我会得到“输出文件中的运算符<<不匹配”的编译错误。
2回复

以递增顺序反向堆叠

以交替的方式以递增的顺序反转堆栈的最优雅的方式(更少的代码?)是什么? (非递归) EX。
3回复

连接字符串时出现错误“与‘operator+’不匹配”

我正在尝试使用以下代码反转字符串中的单词: 我在第 33 行收到此错误,告诉"no match for 'operator+'" 。 我附上了相关的截图: 请帮忙。