Ncurses 输出函数只接受常量数据



我正在尝试将字符串添加到窗口中,而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::stringc_str () 方法来获取 C 样式的字符串。

addstr(line.c_str());

相关内容

  • 没有找到相关文章

最新更新