我试图在revStr.at(j)= str.at(size);下面的c代码行中反转一个字符串;
不会更改revStr中的任何元素。
还有另一种不用任何库就可以做到的方法。
#include <iostream>
#include<sstream>
#include <iterator>
using namespace std;
int main() {
ostringstream d;
long long c = 123456789;
d << c;
//cout << c << endl;
string str = d.str();
//cout << str.at(0) << endl;
int size = str.size() - 1;
//cout << size << endl;
ostringstream e;
e << str;
string revStr = e.str();
for (int i = size; size==0; size--) {
//cout << str.at(size);
int j = 0;
revStr.at(j) = str.at(size);
j++;
} // End For
cout << "Original String is :" << str << endl;
cout << "Reversed String is :" << revStr << endl;
}
Run Code Online (Sandbox Code Playgroud)
使用std::reverse:
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
std::string test{"Hello"};
std::cout << "Original string: " << test << std::endl;
std::reverse(test.begin(), test.end());
std::cout << "Reversed string: " << test << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Original string: Hello
Reversed string: olleH
Run Code Online (Sandbox Code Playgroud)
如果只想反转字符串,则应使用std::reverse,如Tyler Lewis所述。这是最好的选择。
如果您想学习C ++,那么编写自己的版本是一个好习惯。
线
for (int i = size; size==0; size--)
Run Code Online (Sandbox Code Playgroud)
意思是“创建一个新的int名为i并将其设置为size开始。然后,当size为零时,执行以下操作,然后递减size”。
这有三个问题:
i,因此没有必要声明它j,每次设置为零。您可以通过将for循环的中间部分更改为来解决第一个问题size >= 0(但请注意,如果以后再将其更改size为一种unsigned类型,因为将它设为负数没有意义,则该代码将无法正常工作;通常最好增加增量)。您可以通过i在loop语句中的任何地方使用第二个来固定第二个,而不用更改size。您可以通过i在循环主体中使用而不在循环内部声明新变量来修复第三个。
| 归档时间: |
|
| 查看次数: |
5825 次 |
| 最近记录: |