如何在C 中输出Unicode框
How to output unicode box drawing in C++?
对不起,听起来很简单,但是我试图使用https://en.wikipedia.org/wiki/box的Unicode字符在Visual Studio 2017中绘制一个简单的盒子-drawing_character使用以下代码
#include <iostream>
using namespace std;
int main()
{
cout << "┏━━━━━━━━━━━━━━━━━┓" << endl;
cout << "┃" << endl;
等等...
但是,每当我运行上述所有代码时,只需输出作为a吗?任何应该有线路的地方。
因此,可以将像这样的代码直接输出到控制台还是每个字符我必须为每个字符编写数字值?
Windows控制台支持UTF-16LE UNICODE。
例如,您可以使用一些诸如pdcurses之类的盒子驾驶库。
否则您可以使用以下方法
#include <windows.h>
#include <cwchar>
class output_swap {
output_swap(const output_swap&) = delete;
output_swap operator=(output_swap&) = delete;
public:
output_swap( ) noexcept:
prevCP_( ::GetConsoleCP() )
{
::SetConsoleCP( CP_WINUNICODE );
::SetConsoleOutputCP( CP_WINUNICODE );
}
~output_swap() noexcept {
::SetConsoleCP( prevCP_ );
::SetConsoleOutputCP( prevCP_ );
}
private:
::DWORD prevCP_;
};
void draw_text(const wchar_t* text)
{
static ::HANDLE _out = ::GetStdHandle(STD_OUTPUT_HANDLE);
::DWORD written;
::WriteConsoleW( _out, text, std::wcslen(text), &written, nullptr );
}
int main(int argc, const char** argv) {
output_swap swap;
draw_text(L"┏━━━━━━━━━━━━━━━━━┓n");
draw_text(L"┃ OK ┃n");
draw_text(L"┗━━━━━━━━━━━━━━━━━┛n");
return 0;
}
还要在控制台设置中检查主机字体。您可能需要一个栅格字体,但这也适用于consolas。
如果您需要控制台IO流,可以与Unicode一起使用,并且可以使用我的库
Windows Console应用程序如果正确设置该模式,可以将宽字符串(L"..."
)直接输出到终端。还要注意wcout
的使用。将以下源保存在UTF-8编码中:
#include <iostream>
#include <io.h>
#include <fcntl.h>
using namespace std;
int main()
{
_setmode(_fileno(stdout), _O_U16TEXT);
wcout << L"┏━━━━━━━━━━━━━━━━━┓" << endl;
wcout << L"┃" << endl;
}
用" Cl/EHSC/UTF-8 Test.cpp"编译。输出为:
┏━━━━━━━━━━━━━━━━━┓
┃
相关文章:
- 如何存储 unicode 字符并将其输出到文件?
- C++ - 为什么 unicode 输出不正确?
- 如何使用C++在Windows中输出和输入UTF8或UTF16 Unicode文本?
- Linux Ubuntu 中的文件内输出 unicode 符号
- 如何在C 中输出Unicode框
- Unicode 输出未显示在 Windows 控制台中
- 将生成的进程标准输出捕获为 unicode
- 如何将 unicode 文本打印到输出文件?
- 如何在C++中从十六进制字符串输出 Unicode 字符
- c++ 无法输出 unicode 字符,即使我可以直接编写它们
- 使用 MinGW 输出日语文本的 Unicode 程序中C++错误
- 这是怎麽?在读取使用 Unicode 编码的文本文件后控制台输出的开头
- 以C++(而不是字符)输出 Unicode 编号
- 如何在没有_setmode的情况下用C++输出unicode
- 如何在C/C++中输出unicode字符
- 当Unicode模式打开时,打印到VS2010中的调试输出
- 输出任意数字作为unicode
- (c++).非unicode语言(简体中文)输入/输出
- Unicode 无法正确输出 (Windows 10)
- 如何输出捕获为命令行参数子字符串的 unicode 字符