C++函数学习(五)

120 wcstombs, _wcstombs_l

size_t wcstombs(

  char *mbstr,

  const wchar_t *wcstr,

  size_t count

);

mbstr

The address of a sequenceof multibyte characters.

wcstr

The address of a sequenceof wide characters.

count

The maximum number ofbytes that can be stored in the multibyte output string.

errno_t wcstombs_s(

  size_t *pReturnValue,

  char *mbstr,

  size_t sizeInBytes,

  const wchar_t *wcstr,

  size_t count

);

[out] pReturnValue

The number of characters converted.

[out] mbstr

The address of a bufferfor the resulting converted multibyte character string.

[in]sizeInBytes

The size in bytes of the mbstrbuffer.

[in] wcstr

Points to the widecharacter string to be converted.

[in] count

The maximum number of widecharacters to be stored in the mbstr buffer, not including the terminating null character, or _TRUNCATE.

121 data() c_str()  length() 函数的用法

const_cast<char*>(res.data()),MAX_PATH,arg.c_str(),arg.length()

122 友元函数,类的对象的定义调用的写法?构造函数、析构函数、重载运算符。
123 要看的书Windows核心编程
124 头文件被包含一次

#pragma once

#include "inifile.h"

#include "tstdlibs.h"

头文件要放到 #pragma once下面,保证被编译一次

125 类指针变量的使用

我要在一个全局函数中引用CProfile类里的ReadProfileString函数,而其中CProfile类在CCoreMain类中定义了类对象,CProfile              m_Profile;  则要想在全局函数中应用ReadProfileString函数。则定义一个全局指针指向CCoreMain这个类,即

CCoreMain*g_pCoreMain = NULL;

然后让这个指针指向类中的m_Profile中的ReadProfileString函数;

即:g_pCoreMain->m_Profile.ReadProfileString

126 函数输出的类型不能是LPCTSTR ,必须是LPTSTR,非固定值,C 代表固定值;
127 如果把w 和A分开,则LPCTSTR这种指针在W中把T换成W ,如果是A的,则去掉T即可;在A中用strcpy作为拷贝函数,在W中用wcscpy,两个都适应的为_tcscpy函数。

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tcscpy

strcpy

_mbscpy

wcscpy

 

会有类似错误

CIniFileA::CIniSectionA::AddKey': cannot convert parameter 1 from 'LPCTSTR' to 'std::string'

指针类型传给字符串,用strcpy函数

提示这种错误在GetValue().c_str()函数后面加一个c_str()函数

对于””如果为A 则直接“”,如果是W则是L””,如果是T ,及设置是公用的,既可以用A的,也可以是W的,输出空格时用_T(“”)

128  wcscpy_s,

strDestination

Location ofdestination string buffer

numberOfElements

Size of thedestination string buffer.

strSource

Null-terminatedsource string buffer.

wcscpy

strDestination

Destinationstring.

strSource

Null-terminatedsource string.

129

SecIndexW::const_iterator itr =_find_sec( sSection );

   if( itr == m_sections.end() )

   {

       // Note constuctor doesn't trim the string so it is trimmed above

       CIniSectionW* pSection = new CIniSectionW( this , sSection );

       m_sections.insert(pSection);

       return pSection;

   }

   else

       return *itr;

你可以理解为 这是找 节点吧  这里是判断 是否是栈顶了 如果是 就申请新的节点  如果不是则返回它的指针

 

130

错误

是位置不对  他说把
m_FileName.AddFileName( lpszIniFileName); 应该放在函数实现里 

类里的东西 有 成员变量成员函数 还有一些内联函数

131 end()

itr==m_filenames.end()取到最后一个元素后面的元素就是没取到元素,怎证明 元素全部都取完了,当前取到的元素不是m_filenames里的。

132 汉字在内存中占多少字节

宽字节,即wchar_t 类型采用Unicode编码方式,在Windows中为utf-16,在Linux中为utf-32

而多字节则可能是其他很多编码方式,如utf-8GB232....

这个是不一定的,要看是什么编码了,不同的编码存放的字节数不一定一样。

GBK编码下,一个汉字占2个字节;

UTF-8编码下,一个汉字占3个字节

UTF-8是一种国际通用的一种变长编码,ASCII对应的字符在UTF-8下占1个字符,西方文字(希腊文字)占2个字符,中文占用3个字节数,还有平面符号占4个字节。

要定义变量的话就定义4*N + 1,N是一个汉字占得字节数。

你可能感兴趣的:(C++,windows,String,iterator,character,filenames)