c++中令人困惑的东西

perplexing things in c++

本文关键字:c++      更新时间:2023-10-16

我正在尝试将一个字符数组复制到另一个字符数组中。

这是我的方法

void reversString(char* str){
    char* ptr = str;
    int i = 0;
    // getting length of str/ptr array
    while (*(ptr + i) != ''){
        i = i + 1;
    }
    char revStr [i];
    char * revStrChar = &revStr[0];
    int revStrPos = 0;
    cout << *(ptr + 3) << endl;
}

这里我只是试图以正常顺序复制它,但是如果我打印输入的最后一个字母("abcd"),什么也不会发生。它只打印空行。

但是如果我删除一个新的char数组的声明:

void reversString(char* str){
    char* ptr = str;
    int i = 0;
    // getting length of str/ptr array
    while (*(ptr + i) != ''){
        i = i + 1;
    }
    //char revStr [i];
    //char * revStrChar = &revStr[0];
    //int revStrPos = 0;
    cout << *(ptr + 3) << endl;
}

然后正确打印最后一个字母,即"d"。我不明白声明一个新的字符数组如何影响输出!(编译器为minGW,操作系统为Win10)

你标记了c++ 11…为什么不用一种更现代的STL方式呢?

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
   std::string str{"12345abc"};
   std::string copy = str;
   std::reverse(copy.begin(), copy.end());
   std::cout << copy << std::endl;
   return 0;
}
输出:

cba54321 
相关文章:
  • 没有找到相关文章