C++控制檯輸入支持退格

平時我們寫一個小的控制檯程序,如果從控制檯讀取數據的話,輸錯了是不支持回退的。很多我們使用的軟件都是支持的,

在github上找了一個C版本的readline,簡單封裝了一下,供自己平時寫小程序使用。

github地址: https://github.com/troglobit/editline

封裝後代碼如下:

頭文件

#ifndef HANDLE_MODE_CONSOLE_MODE_H_
#define HANDLE_MODE_CONSOLE_MODE_H_
#include <stdio.h>
#include "editline.h"
#include <vector>
#include <string>
class ReadLineWrapper {
public:
	ReadLineWrapper() = default;
	ReadLineWrapper(const ReadLineWrapper &) = delete;
	void operator = (const ReadLineWrapper &) = delete;
	~ReadLineWrapper();
public:
	std::string readLine();
private:
	std::vector<char*> pData = {};
};
#endif

源文件

#include "consoleMode.h"
ReadLineWrapper::~ReadLineWrapper()
{
    for (auto ptr : pData) {
        if (nullptr != ptr) {
            std::free(ptr);
        }
    }
}
std::string ReadLineWrapper::readLine()
{
    char* p = readline("");
    if (nullptr == p) {
        return std::string("");
    }
    pData.push_back(p);
    return std::string(p);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章