我正在尝试将字符串转换为c中的unique_ptr数组但是在使用strcpy()时,我收到错误,这就是我所做的
int arraysize{0},i{0};
std::string word;
std::cout<<"Input size of array: ";
std::cin>>arraysize;
std::cin.get();
std::unique_ptr<char[]>ch_array(new char[arraysize]);
std::cout<<"Input a word: ";
getline (std::cin, word);
strcpy(ch_array,word);
我想得到一个单词并将其转换为字符数组,以检查它是否是回文 . 此外,我只需要使用使用智能指针制作的字符数组,因为我是c的初学者,我正在尝试练习智能指针 .
错误:q3.cpp:在函数'int main()'中:q3.cpp:17:22:错误:无法将参数'1'的'std :: unique_ptr'转换为'char *'为'char * strcpy(char *,const char *)'strcpy(ch_array,word);
任何的意见都将会有帮助 . 谢谢!
1 回答
错误消息是不言自明的 . 您正在传递
std::unique_ptr
,预计char*
.std::unique_ptr<char[]>
不可隐式转换为char*
. 您需要调用其get()
方法来获取指向其已分配内存的char*
指针 .此外,
strcpy()
期望并生成以null结尾的C字符串 . 但是你没有做任何事情来确保word
的数据符合指定的arraysize
的范围 .试试这个:
或者,根本不要问用户
arraysize
,只需使用word
自己的大小: