如何在c ++ ncurses中执行此操作?

时间:2016-09-13 23:59:36

标签: c++ ncurses

let imageRef = String(format: "images/%@", file.identifier)
let testRef = storageRef.child(imageRef)

let uploadTask = testRef.putData(imageData, metadata: nil) { metadata, error in
    if (error != nil) {
        // Uh-oh, an error occurred!
        print(error?.localizedDescription)
    } else {
        // Metadata contains file metadata such as size, content-type, and download URL.
        let downloadURL = metadata!.downloadURL()!.absoluteString
        print(downloadURL)
    }
}

这是我想在ncurses中实现的行为。我想将文本内容打印到ncurses窗口而不是控制台。我应该用gettr()和printw()替换getline()而不是字符串吗?

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?它改编自一个基本示例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包装器,以使其异常安全。

e.g。

#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();
}