C++ C++;反转字符串
我试图在我的C++代码行中反转一个字符串,在代码< > ReSTR..AT(j)=STRAT(size);<代码> 但它不会更改C++ C++;反转字符串,c++,string,C++,String,我试图在我的C++代码行中反转一个字符串,在代码< > ReSTR..AT(j)=STRAT(size); 但它不会更改revStr中的任何元素 有没有其他方法不用任何库就可以做到这一点 #include <iostream> #include<sstream> #include <iterator> using namespace std; int main() { ostringstream d; long long c = 123
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;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
ostringstream d;
长c=123456789;
d使用:
如果你只想反转一个字符串,你应该使用,正如泰勒·刘易斯所描述的,这是最好的选择
<>如果你想学习C++,那么编写你自己的版本是很好的练习。
线路
for (int i = size; size==0; size--)
表示“创建一个名为i
的新int
并将其初始设置为size
。然后,当size
为零时,执行以下操作,然后减小size
”
这有三个问题:
大小不是零,除非输入一个字符串
因为您从未使用过i
,所以声明它没有意义
在循环内使用j
,每次都设置为零
您可以通过将for
循环的中间部分更改为size>=0
来修复第一个问题(但如果以后更改它,使size
是一个无符号的类型,则要小心,因为如果它是负数,则该代码不起作用;通常最好是递增)您可以在循环语句中使用<代码> i <代码>中的任意位置,而不改变<代码>大小<代码>。您可以在循环体中使用<代码> > <代码>,而不是在循环中声明新的变量。 我注意到您使用了STD::String,所以我使用了STD函数交换和String。“library”。有几种“reverse”的定义。你可以反转字符串中的词序,或者像我写的那样进行纯字符对字符的反转。反转也可能意味着改变字符大小写,等等……但这只是交换第一个和最后一个。然后交换第二个和第二个到最后一个,然后交换第三个和第三个到最后一个,等等
代码中的一些点。您只需要循环字符串长度的一半。交换是从第i个和第i个到最后一个。因此最后一个是numCharacters-1,因此第i个到最后一个将是last-i或numCharacters-1-i。我相信这是您使用最左(i)和最右(j)索引的目的
#包括
void reverseStringInPlace(标准::字符串和字符串反向)
{
int numCharacters=stringToReverse.length();
对于(inti=0;i对相关代码段所做的更改,它是有效的
for (unsigned int i = size; size >= 0; size--) {
revStr[j] = str[size];
j++;
}
你可能想知道为什么不使用任何库来做这件事?你应该意识到,<代码> OSTRIGSTROUND,字符串> /COD>,和 CUT/CODE>都在标准的C++库中,所以不使用任何库都意味着你依赖非标准的输出机制。,revStr.end()reverse@DanaAmin“嵌入式功能”是什么意思std::reverse
嵌入到main
中的意义是什么,而std::string::at
不是吗?我正在练习编程。这是为了练习,我想写一个反转数字的程序。
for (int i = size; size==0; size--)
#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;
}
for (unsigned int i = size; size >= 0; size--) {
revStr[j] = str[size];
j++;
}