#include<iostream>
#include<cctype>
#include<string>
#include<cstdlib>
#include"Palindrome.h"
using namespace std;
int main()
{
Stack S1;
string word;
cout << "Do you know what a Palindrome is?\n";
cout << "It is a word that is the same spelling backwards and forward\n";
cout << "Enter in a word";
cin >> word;
char OldWord[word.length] = word;
cout << OldWord[2];
return 0;
}
如果我用20代替word.length,我会得到“无效的初始化程序”错误
答案 0 :(得分:1)
好吧,数组既不可复制也不可分配;你必须逐个元素地循环复制它们(或者使用为你做这个的函数)。另外,局部数组变量的长度必须是编译时常量;你无法在运行时设置它。
此外,std::string
不是数组;为什么你认为这项任务会起作用?
std::string
确实允许类似数组的访问,因此您可以使用word[2]
,假设字符串中至少有三个字符。通常,在C ++中应避免使用原始数组;还有更好的选择,例如std::string
,std::vector
和std::array
(或std::tr1::array
或boost::array
)。
答案 1 :(得分:0)
保留20而不是word.length并使用strcpy进行初始化。
答案 2 :(得分:-1)
需要将值复制到OldWord中。
尝试更改:
char OldWord[word.length] = word;
到
char OldWord[20]; // you mentioned 20...
strcpy(OldWord, word.c_str());