如何从字符串中得到变量的值

cg 2002-04-14 12:43:06
我有很多变量,但都在字符串中,以下这么写太麻烦,有没有简单方法

int GetValue(CString& str)
{
if(str == "nABC")
return nABC;

if(str == "nCDE")
return nCDE;
.................
................
}
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameboy999 2002-04-14
  • 打赏
  • 举报
回复
找到了一段转换代码
DWORD String2ID(LPCSTR str)
{
DWORD s;
int i;
for (s = i = 0; str[i]; ++i)
s = (s + (i + 1) * str[i]) % 0x8000000bu * 0xffffffefu;
return s^0x12345678;
}
gameboy999 2002-04-14
  • 打赏
  • 举报
回复
办法是有的..
你如果能够写出一个函数
把"nABC"转换成唯一的一个long型数值就行了..
方法有简单的..

就是 'n' * 128^3 + 'A' * 128^2 + 'B'* 128 + 'C'

应该可以唯一确定一个字符串..

ok,后面就可以用switch case写代码了

Flysnow 2002-04-14
  • 打赏
  • 举报
回复
这样写可以吗?好像不行吧nABC、nCDE都是什么啊
cg 2002-04-14
  • 打赏
  • 举报
回复
好吧,gameboy999(我心迷茫) 的公式我发现不管用,谢谢参与,我送分了
Wugifer 2002-04-14
  • 打赏
  • 举报
回复
#include <afx.h>
#include <afxtempl.h>

typedef CMapStringToPtr MYMAP;

int GetValue( MYMAP& myMap, CString& str)
{
int* pValue;
if( myMap .Lookup( str, (void*&)pValue ) )
return *pValue;
else
return 0;
}

void main()
{
int var1 = 1;
int var2 = 2;

MYMAP myMap;
myMap[ "var1" ] = &var1;
myMap[ "var2" ] = &var2;

int i1 = GetValue( myMap, CString( "var1" ) );
int i2 = GetValue( myMap, CString( "var2" ) );
// now i1 = 1 and i2 = 2;

var1 = 3;
var2 = 4;

i1 = GetValue( myMap, CString( "var1" ) );
i2 = GetValue( myMap, CString( "var2" ) );
// now i1 = 3 and i2 = 4;

}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧