Ncurses输出函数只接受const数据

时间:2016-07-06 00:14:40

标签: c++ file c++11 stream 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中做什么?我看到的任何输出函数都没有in the documentation接受任何but const input 应该注意的是,如果我只是将文件的内容输出到控制台,这个程序可以正常工作,这样就可以消除文件读取/打开错误的可能性或者流的某些内容。我在编译时遇到的确切错误是:

  

错误:无法将'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}'转换为'const char *'以将参数'2'转换为'int waddnstr(WINDOW *,const char *,int )”          addstr(线);

如果您需要更多信息,请与我们联系。

编辑:添加了相关文档的链接。

1 个答案:

答案 0 :(得分:4)

该问题与const或任何事情的非const无直接关系。

问题是ncurses'addstr()是一个C库函数,它需要一个以null结尾的C样式字符串。

您试图将C ++ std::string对象作为参数传递给addstr()。鉴于addstr()本身是一个C库函数,这不会很好地结束。

解决方案是使用std::string的{​​{1}}()方法获取C风格的字符串。

c_str