当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 常用代码杂记

常用代码杂记

2019年02月22日  | 移动技术网IT编程  | 我要评论

ndawzd,91160,龙血至尊txt全集下载

  输出中文

	locale loc( "chs" );
	wcout.imbue( loc );
	wcout << getexepath().getbuffer() << endl;

   编码转换  

#pragma once

#include <windows.h>
#include <atlstr.h>
#include <string>

typedef std::basic_string<tchar, std::char_traits<tchar>,std::allocator<tchar> > 
	tstring;

std::string t2a(cstring input)
{
	uses_conversion;
	return t2a(input);
}

std::string t2a(tstring input)
{
	uses_conversion;
	return t2a(input.c_str());
}

cstring a2t(std::string input)
{
	uses_conversion;
	return a2t(input.c_str());
}

tstring a2t_2(std::string input)
{
	uses_conversion;
	return a2t(input.c_str());
}

char* unicodetoutf8(const wchar_t* unicode)
{
	int len;
	len = widechartomultibyte(cp_utf8, 0, unicode, -1, null, 0, null, null);
	char *szutf8 = (char*)malloc(len + 1);
	memset(szutf8, 0, len + 1);
	widechartomultibyte(cp_utf8, 0, unicode, -1, szutf8, len, null, null);
	return szutf8;
}

cstring utf82wcs(const char* szu8)
{
	//预转换,得到所需空间的大小;
	int wcslen = ::multibytetowidechar(cp_utf8, null, szu8, strlen(szu8), null, 0);

	//分配空间要给'\0'留个空间,multibytetowidechar不会给'\0'空间
	wchar_t* wszstring = new wchar_t[wcslen + 1];

	//转换
	::multibytetowidechar(cp_utf8, null, szu8, strlen(szu8), wszstring, wcslen);

	//最后加上'\0'
	wszstring[wcslen] = '\0';

	cstring unicodestring(wszstring);

	delete[] wszstring;
	wszstring = null;

	return unicodestring;
}

  读取文件

#pragma once

#include <fstream>
#include <sstream>
#include <string>

std::string getfilecontents(std::string filename)
{
	std::ifstream ifs(filename.c_str());
	if (ifs.good())
	{
		std::stringstream ss;
		ss << ifs.rdbuf();
		return ss.str();
	}
	return "";
}

std::string getfilecontents2(std::string filename)
{
	std::ifstream ifs(filename.c_str());
	if (ifs.good())
	{
		std::string strbuffer((std::istreambuf_iterator<char>(ifs)),std::istreambuf_iterator<char>());
		return strbuffer;
	}
	return "";
}

  获取文件路径

#pragma once

#include <atlstr.h>

// 获取当前可执行文件的路径
cstring getexepath()
{
	cstring strcurpath;
	getmodulefilename(null, strcurpath.getbuffer(max_path), max_path);
	strcurpath.releasebuffer();
	return strcurpath.left(strcurpath.reversefind(_t('\\')));
}

// 获取当前可执行文件的文件名
cstring getexename()
{
	cstring strcurpath;
	getmodulefilename(null, strcurpath.getbuffer(max_path), max_path);
	strcurpath.releasebuffer();
	return strcurpath.mid(strcurpath.reversefind(_t('\\'))+1);
}

  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网