c++ - 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,它会正确打印出原始字符串的反向第三个字符,但我找不到打印整个字符串的方法。
解决方案
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());
为反向字符串的构造提供输入字符串的反向迭代器会以相反的顺序为您提供字符串。
推荐阅读
- python - 使用 Pandas 自相关图 - 如何限制 x 轴以使其更具可读性?
- c# - 来自 cmd.exe 的不同 dotnet 测试结果
- node.js - NodeJS中是否有类似的“Java同步方法”?
- c - 函数中的 Sigaction 声明
- java - Java 应用程序返回 curl:(23) 写入正文失败 (0 != 8042)
- fortran - 第二次用户输入后的分段错误
- powershell - 使用 Copy-Item 或 robocopy 复制文件
- gcc - 将自定义链接器可执行文件指定为 g++
- c++ - 用括号解析 C++ 中的字符串
- asp.net-mvc - 如何在项目 ASP.NET Core MVC 中使用 file.jsx 导入和使用包 npm 作为类名?