正在尝试将字符串转换为字符指针

Trying to Convert String to Character Pointer?

本文关键字:转换 字符 指针 字符串      更新时间:2023-10-16

我一直在尝试做以下简单的事情:

1) 从stdin接收输入字符串。

2) 将它转换为一个字符指针,这样我就可以传递给一个制表/回文查找函数。

我对第2步的后半部分很有信心,但这是我无法破解的类型协议。以下是我的主要问题。帕林函数的原型是int palin(char *str)

int main()
{
    string input;
    cin >> input;
    char seq[] = input.c_str(); //Error here, invalid initialization?
    int len = strlen(seq);
    int result = palin(seq);
    cout << result;
    getchar();
    return 0;
}

有什么想法吗?c_str()转换也出现了一个问题,因为它需要一个常量指针char,但我的char指针会改变。

如果确实需要可变,则需要将字符串复制到传递给palin的可变缓冲区中,例如:

int main()
{
  string input;
  cin >> input;
  char seq[input.length() + 1];
  memcpy(seq, input.c_str(), sizeof seq);
  int result = palin(seq);
  cout << result;
}

您可以尝试strdup

char *c = strdup(str.c_str());
// Do stuff with c
// Make sure to free c when you are done.    
free(c)