-1 c++
我只想使用单个循环来反转字符串。我该怎么做?我尝试了一种简单的方法,但没有得到我想要的输出。
#include<iostream>
using namespace std;
int main()
{
int i;
char a[10];
cout << " Enter String :";
cin >> a;
for(a[i] = '\0'; i > 0; i--)
{
cout << "Reverse string is" << a[i];
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,您无需初始化迭代器变量i,并且可以在for语句中声明索引,因为您无需在for循环范围之外使用此变量。此外,您还可以使用a std::string而不是char数组,这还允许长度超过您指定的十个字符的字符串。
编辑:我假设您可以使用C ++ 17或更高版本。从C ++ 17开始,他们终于添加了非成员版本std::size(由于我阅读了Scott Meyers的《有效的现代c ++》一书,所以我更喜欢与成员相关的版本)。如果由于某种原因不能使用此函数,则可以将其替换为字符串成员函数length,即a.length()。
如果只想打印字符串的反面,则可以使用如下所示的内容
int main()
{
string a;
cout << "Enter String: ";
cin >> a;
for (int idx = size(a) - 1; idx >= 0; --idx)
cout << a[idx];
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用内置的反向功能(请参见此处的说明)。该函数实际上是反转字符串本身。
int main()
{
std::string a;
std::cout << "Enter String: ";
std::cin >> a;
std::reverse(std::begin(a), std::end(a));
std::cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是手动反转字符串(这没有意义,因为它std::reverse是标准库的一部分,但作为学习练习,它可能会有所帮助)。请注意,我们只迭代字符串大小的一半,否则每个元素将交换两次,从而得到原始字符串。
int main()
{
string a;
cout << "Enter String: ";
cin >> a;
for (size_t idx = 0, n = size(a); idx < n / 2; ++idx)
swap(a[idx], a[n - idx - 1]);
cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |