0

我是指针的新手,我想知道是否有人可以查看我的代码并告诉我为什么我收到错误“从 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");
}
4

3 回答 3

1

这一行在这里:

inputArray[i]=input[i];

由于inputArray是一个数组char*而不是类型,因此当在赋值运算符的右侧使用时char,您不能将指针分配给该类型的方法char返回的实际类型右值。指针类型需要分配一个实际的地址值。尝试将其更改为:operator[]string

inputArray[i]=&input[i];

请记住,如果您这样做,对string对象的任何操作都可能使这些存储在inputArray...

于 2012-05-16T21:49:08.073 回答
1

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

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

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

char *inputArray = new char[length];

... your loop ...

delete []inputArray;

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

于 2012-05-16T21:52:08.247 回答
0

您的行 char *inputArray[stringlenght]; 定义了一个指针数组。您不是只是想定义一个 char 数组,也就是说,char inputArray[stringlenght];吗?

在这种情况下,将输入的元素复制到 inputArray 中会起作用,就像将 char 复制到 char 中一样。

于 2012-05-16T21:52:06.447 回答