我正在尝试将字符串添加到窗口中,而getline()
正在从打开的文本文件中获取行。使用 ncurses 和 c++,我正在执行以下操作:
string line; //String to hold content of file and be printed
ifstream file; //Input file stream
file.open(fileName) //Opens file fileName (provided by function param)
if(file.is_open()) { //Enters if able to open file
while(getline(file, line)) { //Runs until all lines in file are extracted via ifstream
addstr(line); //LINE THAT ISN'T WORKING
refresh();
}
file.close(); //Done with the file
}
所以我的问题是...如果我想输出不是 const 数据类型的东西,我应该在 ncurses 中做什么?我在文档中看到的所有输出函数都不接受除 const 输入之外的任何内容。
应该注意的是,如果我只是将文件的内容输出到控制台,该程序可以正常工作,因此消除了它是文件读取/打开错误或流中某些内容的可能性。我在编译时得到的确切错误是:
错误:无法将参数"2"的"std::__cxx11::字符串{aka std::__cxx11:::basic_string}"转换为"const char*"到"int waddnstr(WINDOW*,const char*,int)" addstr(line);
如果您需要更多信息,请告诉我。
编辑:添加了相关文档的链接。
const
性或非const
性没有任何直接关系。
问题在于 ncurses 的addstr()
是一个 C 库函数,它需要一个以 null 结尾的 C 样式字符串。
您正在尝试将C++ std::string
对象作为参数传递给 addstr
()。鉴于addstr
()本身是一个C库函数,这不会有很好的结局。
解决方案是使用 std::string
的 c_str
() 方法来获取 C 样式的字符串。
addstr(line.c_str());