STL的string如何使用UNICODE?

#include "stdafx.h"
#include "TestCmd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CWinApp theApp;

using namespace std;

#ifdef _UNICODE
#define tstring wstring
#else
#define tstring string
#endif

// 唯一的应用程序对象

static void WriteString(HANDLE f, LPCTSTR lpsz, int len);

void WriteString(HANDLE f, LPCTSTR lpsz, int len)
{
	DWORD nWrite = len * sizeof(TCHAR);
	DWORD nActual;
	if (WriteFile(f, lpsz, nWrite, &nActual, NULL)) {
		// display results.
		_tprintf(_T("%d bytes written\n sizeof(TCHAR)=%d\n"), nActual,
			sizeof(TCHAR));
	} else {
		_tprintf(_T("ERROR %d writing\n"), GetLastError());
	}
}

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// 初始化MFC 并在失败时显示错误
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: 更改错误代码以符合您的需要
		_tprintf(_T("错误: MFC 初始化失败\n"));
		nRetCode = 1;
	}
	else
	{

		// CreateFile will create Unicode or MBCS string
		// depending on value of _UNICODE.
		LPCTSTR filename = _T("D:\\1.txt");
		HANDLE f = CreateFile(filename, GENERIC_READ|GENERIC_WRITE,
			FILE_SHARE_READ|FILE_SHARE_WRITE,
			NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

		if (f!=INVALID_HANDLE_VALUE)
		{
			if (GetFileType(f) == FILE_TYPE_DISK)
			{
				// create STL tstring
				tstring s = _T("Hello, world");
				WriteString(f, s.c_str(), s.length());
			} else {
				_tprintf(_T("ERROR: the specified file '%s' is not a disk file\n"),
					filename);
			}
			CloseHandle(f); // close file
		} else {
			_tprintf(_T("ERROR: can't open '%s'\n"), filename);
		}

	}

	return nRetCode;
}
时间: 2024-11-05 04:49:03

STL的string如何使用UNICODE?的相关文章

STL之string

一,字符串的概念 1.字符串与字符指针的比较 string是STL封装的一个类,char *是一个指向字符的指针,string是对char *的封装,是一个char *的容器. string不需要考虑内存的释放和越界,string会管理char *的内存,在构建,赋值,销毁等操作都是由string自己完成的. string提供了一些列的成员函数,简化了我们对字符串的操作. 二,字符的构造函数 1.默认无参构造函数 string str; // 构造一个空字符串 2.有参构造函数 //1. 用字面

C++STL之String

本文直接转载,非原创!仅记录供自己学习之用. 出处:http://blog.csdn.net/y990041769/article/details/8763366 在学习c++STL中的string,在这里做个笔记,以供自己以后翻阅和初学者参考. 1:string对象的定义和初始化以及读写 string s1;      默认构造函数,s1为空串 string s2(s1);   将s2初始化为s1的一个副本 string s3("valuee");   将s3初始化一个字符串面值副本

STL之string使用详解

声明一个C++字符串 string类的构造函数和析构函数如下: string s; //生成一个空字符串s string s(str) //拷贝构造函数 生成str的复制品 string s(str,ss) //将字符串str内以ss开始的部分当作字符串的初值 string s(str,ss,length) //将字符串str内ss开始长度为length的部分作为字符串的初值 string s(cstr) //将C字符串作为s的初值 string s(chars,chars_len) //将C字

C++STL之string (转)

在学习c++STL中的string,在这里做个笔记,以供自己以后翻阅和初学者参考. 1:string对象的定义和初始化以及读写 string s1;      默认构造函数,s1为空串 string s2(s1);   将s2初始化为s1的一个副本 string s3("valuee");   将s3初始化一个字符串面值副本 string s4(n,'c');   将s4 初始化为字符'c'的n个副本 cin>>s5;  读取有效字符到遇到空格 getline(cin,s6

C++之STL之string

/*C 语言中字符数组一般会采用char str[]来存放,但是显得会比较麻烦,C++在stl中加入了string类型,对字符串常用的功能进行了封装,操作起来比较方便*/#include<cstdio>#include<string>using namespace std;int main(){ string str = "hello world"; for (int i = 0; i< str.length(); i++){ printf("%

Cstring与char*、String转Cstring(unicode编码)

unicode编码下,cstring与char*.String转Cstring的转换方法: 1 . CSstring转char * wchar_t *psw_wchar = psw.GetBuffer(); //获取psw的宽字符用数组保存 psw.ReleaseBuffer(); int nLen = psw.GetLength();//获取psw的字符数 char *encrypt = new char[nLen * 2 + 1]; memset(encrypt, 0, nLen * 2 +

从C# String类理解Unicode(UTF8/UTF16)

上一篇博客:从字节理解Unicode(UTF8/UTF16).这次我将从C# code 中再一次阐述上篇博客的内容. C# 代码看UTF8 代码如下: string test = "UTF-8你"; //把字符转换为 byte[] byte[] bytearray_UTF8 = Encoding.UTF8.GetBytes(test); // byte[] to 16 进制的字符形式 String hexString = BitConverter.ToString(bytearray_

STL之string插入

1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 int main() 6 { 7 string s("hello"); 8 string s2("abcdef"); 9 10 string::iterator p = s.begin(); 11 cout << *p << endl; 12 s.insert(p, 'A'); //

解读STL的string类中各方法的使用场景

所在头文件:<string> 实现:typedf basic_string<char> string 所在命名空间:std 功能:标准string提供字节标准容器的接口,同事增加对字符串中单独的字符的操作.由于标准string是basic_string<char>的一种特化,只能针对char型,如果字符编码方式是多字节或者可变字符序列(eg:UTF-8)那么它仍然按字节去解读,而不是按照传入内容的编码方式. (1)成员函数number functions constru