我一直在尝试阳光下的所有事情来完成简单的操作:
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指针会改变。
答案 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)