C ++错误我一直得到这个错误变量大小的对象`OldWord'可能没有被初始化

时间:2011-04-08 23:59:14

标签: c++

#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,我会得到“无效的初始化程序”错误

3 个答案:

答案 0 :(得分:1)

好吧,数组既不可复制也不可分配;你必须逐个元素地循环复制它们(或者使用为你做这个的函数)。另外,局部数组变量的长度必须是编译时常量;你无法在运行时设置它。

此外,std::string不是数组;为什么你认为这项任务会起作用?

std::string确实允许类似数组的访问,因此您可以使用word[2],假设字符串中至少有三个字符。通常,在C ++中应避免使用原始数组;还有更好的选择,例如std::stringstd::vectorstd::array(或std::tr1::arrayboost::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());