我正在尝试向窗口添加字符串,而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(线);
如果您需要更多信息,请与我们联系。
编辑:添加了相关文档的链接。
答案 0 :(得分:4)
该问题与const
或任何事情的非const
无直接关系。
问题是ncurses'addstr()
是一个C库函数,它需要一个以null结尾的C样式字符串。
您试图将C ++ std::string
对象作为参数传递给addstr
()。鉴于addstr
()本身是一个C库函数,这不会很好地结束。
解决方案是使用std::string
的{{1}}()方法获取C风格的字符串。
c_str