!!!如何能获取变量名的字符串形式名字, 如何获取变量名的字符表现形式,变量名变为字符串?

shinefen 2009-11-26 11:07:17
如题

也就是
int abc=1;
CString name;

如何能使 name="abc";

能的吗? ......



...全文
453 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
stjay 2009-11-28
  • 打赏
  • 举报
回复
脚本所谓的 字符串索引
也是用map之类的映射来实现的

#include "stdafx.h"
#include <map>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
map<string,int> nArray;
int abc=1;
int a;
nArray.insert(pair<string,int>("abc",abc));
a = nArray["abc"];

printf("%d",a);
return 0;
}
shinefen 2009-11-28
  • 打赏
  • 举报
回复
明白11楼的意思.,也就要用类加多个成员字符变量自己手动存...谢谢

如果直接能n.SetObjectName(); n.ObjectName()=="n"; 就完美了

呵呵~
谢谢大家的见解,
我纯属想问1下了解1下...那么能字符串转为对应变量名呢?
jameshooo 2009-11-28
  • 打赏
  • 举报
回复
正因为C++严谨,所以没有
ziplj 2009-11-28
  • 打赏
  • 举报
回复
挺复杂的... 没用过
shinefen 2009-11-28
  • 打赏
  • 举报
回复
我不会用
#宏,能详细点吗
#宏 只能获取类名?而不是变量名吧?
shinefen 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 guolihui112 的回复:]
#define NN( nam, val )\
int nam = val;\
CString name = #name

[/Quote]

这个编译有错啊,,

shinefen 2009-11-27
  • 打赏
  • 举报
回复
那么字符串转 变量名呢?


我印象javascript可以的..

想C++这些严谨的语言,没有?
hongya6088 2009-11-27
  • 打赏
  • 举报
回复
这个好像不行,顶多可以知道变量的类型
ouyh12345 2009-11-27
  • 打赏
  • 举报
回复
宏#
用户 昵称 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supconsupcon 的回复:]
编译器说不定能行
[/Quote]

supconsupcon 2009-11-27
  • 打赏
  • 举报
回复
MFC的运行时类型识别是否能给大家点提示呢?
MFC怎么知道一个对象是某个类的类型呢?
运行期用类名进行比较来判断的
arong1234 2009-11-27
  • 打赏
  • 举报
回复
实际上它识别时不关心类的实际名字,只要每个类在CRuntinmeClass对象中有个独特的名字即可。
所以不能说“MFC 就是通过 ‘#’ 宏把类名变成字符串来实现运行期类型辨识的”
[Quote=引用 14 楼 practise_think 的回复:]
MFC 就是通过 ‘#’ 宏把类名变成字符串来实现运行期类型辨识的
[/Quote]
guolihui112 2009-11-27
  • 打赏
  • 举报
回复
#define NN( nam, val )\
int nam = val;\
CString name = #name
Practise_Think 2009-11-27
  • 打赏
  • 举报
回复
MFC 就是通过 ‘#’ 宏把类名变成字符串来实现运行期类型辨识的
arong1234 2009-11-27
  • 打赏
  • 举报
回复
楼主获得变量名的目的何在?C++按照道理不需要这样做。jscript支持也许是出于一些特殊的原因,对C++不代表就是一个比较好的事情。先说你目的
heroic8 2009-11-27
  • 打赏
  • 举报
回复
上面代码有个BUG 呵呵,,失误失误 CInt 成员变量 应该是int型 俺没注意 搞错了 对不住啊
heroic8 2009-11-27
  • 打赏
  • 举报
回复
C++ 虽然没有 可以自己写撒。 只是加个基类而已

代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

class CBase
{
public:
CBase() {}
~CBase() {}

void SetObjectName(const string& name) { m_VarName = name; }
string ObjectName() const { return m_VarName; }
protected:
string m_VarName;
};


class CInt : public CBase
{
public:
CInt() : CBase() {}

CInt(int n) { m_value = n; }

CInt(const CInt& org)
{
m_VarName = org.m_VarName;
m_value = org.m_value;
}
~CInt(){}

private:
double m_value;
};



int _tmain(int argc, _TCHAR* argv[])
{
CInt n = 6;

n.SetObjectName("n");

string name = n.ObjectName();

std::cout << name << std::endl;
return 0;
}


erjun11_24 2009-11-27
  • 打赏
  • 举报
回复
哦!感谢9楼指教!谢谢!学习了!呵呵!
huliang66 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 erjun11_24 的回复:]
我是个初学者,不要骂我呀!还不清楚你要干吗的,但这样
CString name;
name.Format("abc");
AfxMessageBox(name);
好象能显示出abc的吧?


[/Quote]
他不是想要“abc”,他想动态的取得变量名,不过似乎没有必要,
变量名在你写好程序后应该定了,在动态取似乎有点多余了
erjun11_24 2009-11-27
  • 打赏
  • 举报
回复
我是个初学者,不要骂我呀!还不清楚你要干吗的,但这样
CString name;
name.Format("abc");
AfxMessageBox(name);
好象能显示出abc的吧?

加载更多回复(3)

16,472

社区成员

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

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

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