1

我一直在尝试在阳光下做所有简单的事情:

1) 从标准输入接收输入字符串。

2) 将其转换为 char 指针,以便我可以传递给表格/回文查找函数。

我对第 2 步的后半部分很有信心,但这是我无法破解的类型协议。以下是我有问题的主体。palin 函数的原型是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 指针会改变。

4

2 回答 2

2

如果确实需要可变,则需要将字符串复制到传递给 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;
}
于 2014-10-18T14:59:53.257 回答
0

你可以试试strdup

char *c = strdup(str.c_str());

// Do stuff with c

// Make sure to free c when you are done.    
free(c)
于 2014-10-18T16:20:36.963 回答