ifstream inputfile;
string line;
if (inputfile.is_open())
{
while (getline(inputfile,line))
{
cout << line << endl;
}
inputfile.close();
}
这是我想在 ncurses 中实现的行为。我想将文本内容打印到 ncurses 窗口而不是控制台。我应该用 getstr() 替换 getline() 并将 printw() 替换为字符数组而不是字符串吗?
最佳答案
这是你想要的吗?它改编自基本示例之一 here .
#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();
}
关于c++ - 如何在 C++ ncurses 中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480626/