我是指针的新手,我想知道是否有人可以查看我的代码并告诉我为什么我收到错误“从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");
}
答案 0 :(得分:1)
这一行:
inputArray[i]=input[i];
由于inputArray
是char*
而不是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中。