试图将字符串转换为字符指针?

时间:2014-10-18 14:33:28

标签: c++ string pointers char-pointer

我一直在尝试阳光下的所有事情来完成简单的操作:

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

2)将其转换为char指针,以便传递给tabling / palindrome查找函数。

我对第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指针会改变。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您可以尝试strdup

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

// Do stuff with c

// Make sure to free c when you are done.    
free(c)