我试图将字符串转换为我的c ++代码行,低于revStr.at(j)= str.at(size);
不会更改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;
}
答案 0 :(得分:5)
如果您只想反转字符串,则应使用std::reverse
,如Tyler Lewis所述。这是最好的选择。
如果您想学习C ++,那么编写自己的版本就是一种很好的做法。
该行
for (int i = size; size==0; size--)
表示“创建一个名为int
的新i
,并最初将其设置为size
。然后,当size
为零时,执行以下操作,然后递减size
“。
这有三个问题:
i
,那么宣布它是没有意义的j
,每次都设置为零。您可以通过将for
循环的中间部分更改为size >= 0
来修复第一个问题(但要小心 - 如果您稍后更改它,以便size
为unsigned
}类型,因为它没有意义,它是负面的,代码将不起作用;通常更好的是增加上升而不是)。您可以在循环语句中的任何位置使用i
来修复第二个,而不是更改size
。您可以在循环体中使用i
来修复第三个,而不是在循环内声明一个新变量。
答案 1 :(得分:3)
使用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;
}
输出:
Original string: Hello
Reversed string: olleH
答案 2 :(得分:1)
我注意到你使用了std :: string所以我使用了std函数swap和string。取决于您是否将其视为&#39;库。 “反向”有几种定义。您可以将字符串中的单词顺序反转,或者像我写的那样将纯字符反转为字符反转。逆转也可能意味着改变角色情况......等等,这只是交换的第一个和最后一个。然后将第二个和第二个交换到最后一个,然后交换第三个和第三个到最后一个等等......
您的代码中的一些要点。你只需要循环一半的字符串长度。交换是从第i个和第i个到最后的。所以最后一个是numCharacters - 1,因此最后的第i个将是Last - i或numCharacters - 1 - i。我相信这是你使用farLeft(i)和farRight(j)索引的意图。
#include <iostream>
void reverseStringInPlace(std::string &stringToReverse)
{
int numCharacters = stringToReverse.length();
for (int i=0; i<numCharacters/2; i++)
{ std::swap(stringToReverse[i], stringToReverse[numCharacters-i-1]); }
}
int main()
{
std::string stringToReverse = "reversing a string";
std::cout << stringToReverse << std::endl;
reverseStringInPlace(stringToReverse);
std::cout << stringToReverse << std::endl;
return 0;
}
输出:
倒转字符串
gnirts a gnisrever
答案 3 :(得分:0)
对相关代码所做的更改,它有效。
for (unsigned int i = size; size >= 0; size--) {
revStr[j] = str[size];
j++;
}