VC++中,类型为LPSTR字符串的处理问题? 在函数中生成明了一个LPSTR 字符串(例如:ABC-3D3),如何把这个字符串按"-"分开,并且把里面的字母按A=0,B=1,C=2,D=3这个的规则转换为数字,最后把所有这六位数字相加求和? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写的不好!请多指教 int GetChar( char cStr); int CharToNum( char cStr); int GetProcess( LPSTR cDataInput, LPSTR cSplitFlag);int CTTADlg::GetProcess( LPSTR cDataInput, LPSTR cSplitFlag){ char *cTempStr = new char[1024]; char *cRetStr = ""; int lnAllCount = 0; _tcscpy(cTempStr,cDataInput); cRetStr = _tcstok( cTempStr, cSplitFlag ); while( cRetStr != NULL ) { for( int iSum = 0; iSum < (int)strlen(cRetStr); iSum++) { int iTemp = GetChar(cRetStr[iSum]); if( iTemp != -1) { lnAllCount += iTemp; } else { int iTemp2 = CharToNum(cRetStr[iSum]); if ( iTemp2 != -1) { lnAllCount += iTemp2; iTemp2 = 0; } } } cRetStr = _tcstok( NULL, cSplitFlag ); } delete[] cTempStr; cTempStr = NULL; return lnAllCount;}int CTTADlg::GetChar( char cStr){ if ( cStr >= 0x41 && cStr <= 0x5A) { return CharToNum((int)(cStr) - 0x11); } else if( cStr >= 0x61 && cStr <= 0x7A) { return CharToNum((int)(cStr) - 0x17); } else { return -1; }}int CTTADlg::CharToNum( char cStr){ if ( cStr >= 0x30 && cStr <= 0x39) { return (int)(cStr) - 0x30; } else { return -1; }}//使用TEST LPSTR cDataInput = "ABC-3D3"; LPSTR cSplitFlag = "-"; int iOut = GetProcess(cDataInput, cSplitFlag); CString aa; aa.Format(_T("%d"),iOut); AfxMessageBox(aa);//aa = 12 关于阅读软件的开发。 List容器10个10个输出里面的数据,或者有什么容器能10个10个输出? 你好,我想请问一个关于加载DLL程序集的问题 请问:windows中录音机播放wav文件时的波形图该怎么画?它的原理是什么? 读.ini 如何正常的退出线程? Vector定义的二维数组应怎样遍历? 高手请进! AfxMessageBox("该文件没有关联程序执行操作。请在控制面板的文件夹选项中创建关联程序。"); 一个Winsock的问题? 单文档结构下,如果得到关于对话框的句柄??? 大家帮我看看程序哪错了?(PostThreadMessage)
int GetChar( char cStr);
int CharToNum( char cStr);
int GetProcess( LPSTR cDataInput, LPSTR cSplitFlag);
int CTTADlg::GetProcess( LPSTR cDataInput, LPSTR cSplitFlag)
{
char *cTempStr = new char[1024];
char *cRetStr = "";
int lnAllCount = 0; _tcscpy(cTempStr,cDataInput);
cRetStr = _tcstok( cTempStr, cSplitFlag );
while( cRetStr != NULL )
{
for( int iSum = 0; iSum < (int)strlen(cRetStr); iSum++)
{
int iTemp = GetChar(cRetStr[iSum]);
if( iTemp != -1)
{
lnAllCount += iTemp;
}
else
{
int iTemp2 = CharToNum(cRetStr[iSum]);
if ( iTemp2 != -1)
{
lnAllCount += iTemp2;
iTemp2 = 0;
}
}
}
cRetStr = _tcstok( NULL, cSplitFlag );
}
delete[] cTempStr;
cTempStr = NULL;
return lnAllCount;
}
int CTTADlg::GetChar( char cStr)
{
if ( cStr >= 0x41 && cStr <= 0x5A)
{
return CharToNum((int)(cStr) - 0x11);
}
else if( cStr >= 0x61 && cStr <= 0x7A)
{
return CharToNum((int)(cStr) - 0x17);
}
else
{
return -1;
}
}int CTTADlg::CharToNum( char cStr)
{
if ( cStr >= 0x30 && cStr <= 0x39)
{
return (int)(cStr) - 0x30;
}
else
{
return -1;
}
}
//使用TEST
LPSTR cDataInput = "ABC-3D3";
LPSTR cSplitFlag = "-";
int iOut = GetProcess(cDataInput, cSplitFlag);
CString aa;
aa.Format(_T("%d"),iOut);
AfxMessageBox(aa);
//aa = 12