无法在 getstr() 中将字符串转换为字符*

cannot convert string to char* in getstr()

本文关键字:转换 字符串 字符 getstr      更新时间:2023-10-16

所以我只是想将一个空字符串写入char [80],但出现错误"无法在getstr()中将字符串转换为char*"?(我通常在将字符串写入像char[80] = "hello world"这样的char数组时得到这一点。

顺便说一句,这包括很多 ncurses 的东西。不包括其他功能。

int main(){
std::string message;
//...
for(;;){
wrefresh(chatWin);
message = "hello world";
getstr(message);
if(message != ""){
displayMessage(message, displayLine, displayWin);
wmove(chatWin, 1, 7);
}
}
}

我希望它从函数中获取用户的输入,但它抛出错误"无法在 getstr() 中将字符串转换为 char*"。getstr来自ncurses。任何帮助都非常感谢,提前感谢您!

我怀疑你写过这样的东西:

int main() {
char message[80];
message = "";
}

这将产生错误:

错误:将"常量字符 [1]"分配给"字符 [80]"的类型不兼容

要将message设置为空字符串,您可以使用将空字符串复制到message数组中的惯用方式进行操作,如下所示:

strcpy(message, "");

或者干脆在数组的开头放置一个 null 终止字符,如下所示:

message[0] = 0;

不能凭良心写这篇文章而不提到std::string是个好主意。 但是,将所有使用 char 数组的现有代码移植到使用std::string的技术可能会很不方便。 例如,getstr可能期望char*而不是std::string。 相反,您需要通过std::vector<char>在 char 数组和std::string之间进行互操作。 我认为在这个答案中确切地回答如何是超出范围的范围。

#include <string>
#include <curses.h>
int main() {
std::string message;
message = ""; // This works.
getstr(message); // This doesn't. (assuming `getstr` from curses.h)
}

参见 有没有办法将 std::string 传递给接受 char* 并更改其内容的函数?