我只是想知道当你的文本文件看起来像
"Variable name a" 1.0 "Variable name b" 2.0 "Variable name c" 3.0
等等。我只是试图分配值,而不会因为文本文档中的变量名而出错。我试着联系我的教授,但他生病了,一直没有检查他的电子邮件。
waxmsbnn1#
哎呀......这里有一个很大的误解。C++不是一种动态语言,在这种语言中,可以声明一个新变量沿着名称。生成一个可执行文件需要不同的步骤(*):
长话短说,你不想创建新的变量。但是你可以把新的值存储在像map或unordered_map这样的容器中,并用字符串索引它们...(*)这只是一个简化的视图。在真实的世界的环境中,编译被分为预编译和实际编译,链接阶段可以分为静态链接阶段(在构建时)和动态链接阶段(就在运行时之前)
map
unordered_map
cdmah0mi2#
由于C++是一种编译语言,您不能在运行时创建变量。作为一种解决方法,您可以创建一个数组/Map,其索引为变量名。然后您可以调用array[variablename]并获取值
array[variablename]
b4lqfgs43#
您需要一个关联容器来关联名称和值,我推荐使用std::map。
std::map
std::map<string, int> database; std::string row_text; while (std::getline(my_file, row_text) { char first_double_quotes; std::istringstream row_stream(row_text); row_stream >> first_double_quotes; std::string variable_name; std::getline(row_stream, variable_name, '"'); int value; std::row_stream >> value; database[variable_name] = value; }
要检索变量的值:
int variable_value = database[variable_name];
在C++中,你不能在运行时创建命名变量,但是你可以把变量名放入一个关联容器中,并把槽当作一个变量。
3条答案
按热度按时间waxmsbnn1#
哎呀......这里有一个很大的误解。C++不是一种动态语言,在这种语言中,可以声明一个新变量沿着名称。生成一个可执行文件需要不同的步骤(*):
长话短说,你不想创建新的变量。但是你可以把新的值存储在像
map
或unordered_map
这样的容器中,并用字符串索引它们...(*)这只是一个简化的视图。在真实的世界的环境中,编译被分为预编译和实际编译,链接阶段可以分为静态链接阶段(在构建时)和动态链接阶段(就在运行时之前)
cdmah0mi2#
由于C++是一种编译语言,您不能在运行时创建变量。作为一种解决方法,您可以创建一个数组/Map,其索引为变量名。然后您可以调用
array[variablename]
并获取值
b4lqfgs43#
您需要一个关联容器来关联名称和值,我推荐使用
std::map
。要检索变量的值:
在C++中,你不能在运行时创建命名变量,但是你可以把变量名放入一个关联容器中,并把槽当作一个变量。