无法在 getstr() 中将字符串转换为字符*
cannot convert string to char* in getstr()
所以我只是想将一个空字符串写入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* 并更改其内容的函数?
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数