我当时在编写一个简单的XOR加密程序,然后发现函数的返回值不是我期望看到的那种。

我只是在代码中找不到问题,有人可以帮助我吗?

这是程序代码:

#include "windows.h"
#include "iostream"

using namespace std;


LPCSTR hasala(string original, char key){

  string changed;

  for (int temp = 0; temp < original.size(); temp++){
  changed += original[temp] ^ (int(key) + temp) % 255;
  }

  cout << changed.c_str()<<"\n\n";//works, output "acagaca"

  LPCSTR adart = changed.c_str();

  cout << adart<<"\n\n";//works, output "acagaca"

  return adart;

}

int main(){

    cout << hasala("abcdefg", 0);//doesn't work, output "||||@ER|||"...

    cout << "\n\n";

    Sleep(8000);

    return 0;
}

最佳答案

您拥有的指针指向堆栈中std::string拥有的内存-std::string超出范围时,它将释放它,然后读取它。您必须返回std::string,而不是LPCSTR

关于c++ - LPCSTR函数的返回值变得困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10073608/

10-11 19:15