C++ C++;反转字符串

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

我试图在我的C++代码行中反转一个字符串,在代码< > ReSTR..AT(j)=STRAT(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;

}
#包括
#包括
#包括
使用名称空间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++;
    
            }