[英]How to do this in c++ ncurses?
ifstream inputfile;
string line;
if (inputfile.is_open())
{
while (getline(inputfile,line))
{
cout << line << endl;
}
inputfile.close();
}
这是我要在ncurses中实现的行为。 我想将文本内容打印到ncurses窗口而不是控制台。 我应该用getstr()和printw()的char数组而不是字符串替换getline()吗?
这就是你想要的吗? 它是从此处的一个基本示例改编而成的。
#include <fstream>
#include <iostream>
#include <string>
#include <ncurses.h>
int main()
{
std::ifstream inputfile("filew.txt");
std::string line;
initscr();
if(inputfile.is_open())
{
while (inputfile >> line)
{
printw("%s\n", line.c_str());
}
} else
{
printw("didnt find file `file.txt`\n");
}
refresh();
std::cin.ignore();
endwin();
}
由于我们处在c ++世界中,因此我担心某些异常可能导致我们退出程序而没有使用endwin
进行清理而感到害怕。 因此,我可能会添加一个简单的RAII包装器以使其异常安全。
例如
#include <fstream>
#include <iostream>
#include <string>
#include <ncurses.h>
class ncursewrap
{
public:
ncursewrap() { initscr(); }
~ncursewrap() { endwin(); }
void refresh() { ::refresh(); }
};
int main()
{
std::ifstream inputfile("file.txt");
std::string line;
ncursewrap nc;
if(inputfile.is_open())
{
while (inputfile >> line)
{
printw("%s\n", line.c_str());
}
} else
{
printw("didnt find file `file.txt`\n");
}
nc.refresh();
std::cin.ignore();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.