C++ 在 MSVC 编译器环境下如何向 Windows 控制台或文件正确输出中文

我没想到这系列还能出第三期,我佛了,Windows,你拿什么来赔我!

这次的问题是:在遍历窗口句柄想要输出每个窗口的标题时,中文标题无法正常输出。

继续阅读“C++ 在 MSVC 编译器环境下如何向 Windows 控制台或文件正确输出中文”

使用宽字符解决 Windows 路径乱码问题 —— 没那么深入理解 Windows 下C++ 字符串编码

对我而言,开发最容易踩到坑踩到屎的就是 iOS 开发,其次是 Windows 开发。

归其原因,一般我接触到的 C++ 开发都是以类 unix 系统作为开发的(MacOS、Android、Linux),所以作为不同源且自成门派的 Windows 系统开发对我来说,开发的时候就能感受到很多割裂感,比如 Windows 特有的各种 winAPI,以及不同于类 unix 系统的各种习惯。(例如回车是 LRLF,Visual Studio 文件编码之类的)。

这次可是吃了一坨大的,也多亏于此我对于文件的编码有了更深的认识。

接下来就讲一下我的探索之旅。

继续阅读“使用宽字符解决 Windows 路径乱码问题 —— 没那么深入理解 Windows 下C++ 字符串编码”

友元黑魔法——在类内定义友元函数

起因是我写了这么一段代码:

template <typename type>
class LIFO_stack : public my_stack<type> {
	template <typename ano_type>
	friend ostream& operator<<(ostream& os, LIFO_stack<ano_type>& s);
}
template <typename type>
ostream& operator<<(ostream& os, LIFO_stack<type>& s) {
	auto it = --s.vec.end();
	for (; it != s.vec.begin(); --it) {
		os << *it << ' ';
	}
	os << *it << endl;
	return os;
}

继续阅读“友元黑魔法——在类内定义友元函数”