首页 > 解决方案 > C++ 不打印字符串

问题描述

抱歉这个菜鸟问题,我是一名新手程序员,正在从 C 过渡到 C++。我可以很容易地编写一个程序来以相同的方式在 C 中反转一个字符串,但只需稍作改动,但是用 C++ 编写它,为什么这不打印任何东西:

#include <iostream>
#include <string>

using namespace std;

int main(){
    string s,p;
    getline(cin,s);
    int j=0,i = 0;
    while(s[i]!='\0'){
        i++;
    }
    i--;
    while(i!=-1){
        p[j] = s[i];
        j++;
        i--;
    }
    cout << p << endl;
    return 0;
}

如果我用 p[2] 替换 p,它会正确打印出原始字符串的反向第三个字符,但我找不到打印整个字符串的方法。

标签: c++

解决方案


    std::string str{"reverse me"};
    std::string rev{str.rbegin(), str.rend()};
    //or when you are not interested in the orignal string
    std::reverse(str.begin(), str.end());

为反向字符串的构造提供输入字符串的反向迭代器会以相反的顺序为您提供字符串。


推荐阅读