c ++动态数组和输入字符串

时间:2012-05-16 21:45:04

标签: c++

我是指针的新手,我想知道是否有人可以查看我的代码并告诉我为什么我收到错误“从Char转换为Char无效;

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main (int argc, char * const argv[]) {
    int stringlenght;
    string  input;

    cout << "Please enter a  string >";
    getline(cin,input);
    cout << "You entered: " << input  << endl << endl;

    stringlenght=input.length();
    cout << stringlenght;

    char *inputArray[stringlenght];
    for (int i=0; i < stringlenght; i ++) {
        inputArray[i]=input[i];
    }

    //system("pause");
}

3 个答案:

答案 0 :(得分:1)

这一行:

inputArray[i]=input[i];

由于inputArraychar*而不是char类型的数组,因此您无法为指针指定{{0}}返回的实际char类型右值。在赋值运算符的右侧使用operator[]类型的{1}}方法。需要为指针类型分配实际地址值。尝试将其更改为:

string

请记住,如果这样做,inputArray[i]=&input[i]; 对象上的任何操作都可能使string中的这些存储指针无效......

答案 1 :(得分:1)

您的示例的问题是您已将inputArray声明为字符指针数组,因此inputArray [i]将是指向字符的指针。

您要做的是将指针分配给inputArray中的第i个位置一个字符值。

我认为您想要做的是将inputArray声明为:

char *inputArray = new char[length];

... your loop ...

delete []inputArray;

这改为创建一个指针,并使其指向内存中可以存储字符的连续区域,因此inputArray [i]的类型将是char而不是char *。

答案 2 :(得分:0)

你的路线 char *inputArray[stringlenght]; 定义一个指针数组。您是不是只想定义一个char数组,即char inputArray[stringlenght];

在这种情况下,将输入的元素复制到inputArray中会起作用,因为您将char复制到char中。