如何使用变量名称引用数组位置
How to reference an array position with a variable name
使用变量名引用数组位置的最简单方法是什么?
string var = "foo";
string foo[] = { "My name is Bob", "My name is Tom" };
在这种情况下,我想打印变量 var 引用的数组的第二个元素。我将有几个不同的数组,变量"var"将不断更改为不同数组的名称。我试过:
cout << var[1] << endl;
但是,当然,这只会返回字符串中的第二个字符,因为它是一组字符。但我想引用索引为 1 的名称 foo。我该怎么做?
你不能;变量名称在运行时不可用。
如果希望一个变量引用另一个变量,请使用引用或指针。例如
string * var = foo;
cout << var[1] << endl;
我能想到的唯一方法是使用std::map
。
std::map<std::string, std::vector<std::string>> mapOfArrays;
mapOfArrays["foo"] = { "My name is Bob", "My name is Tom" };
mapOfArrays["bar"] = { "My name is Jim", "My name is Sam" };
std::cout << mapOfArrays["foo"][1] << std::endl;
std::cout << mapOfArrays["bar"][1] << std::endl;
您还可以尝试以下使用元组的方法。例如
#include <iostream>
#include <tuple>
#include <string>
#include <functional>
int main()
{
std::string bar = "foo";
std::string foo[] = { "My name is Bob", "My name is Tom" };
auto var = std::make_tuple( std::ref( bar ), std::ref( foo ) );
std::cout << std::get<0>( var )[0] << std::endl;
std::cout << std::get<1>( var )[0] << std::endl;
return 0;
}
输出为
f
My name is Bob
我怀疑我是否理解这个问题,但也许结构化绑定声明(C++17)会有所帮助:
void Bla()
{
std::wstring _name[] = { L"Bo", L"Selecta" };
auto [FirstName, LastName] = _name;
std::wcout << FirstName << L" " << LastName << L"n";
}
也适用于元组。
相关文章:
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何在数组中交换最小和最大的位置?
- C++ 2D 数组写入多个位置
- C++指针数组到字符数组中的特定位置
- 递增 'int i = 0' 以在初始化的字符数组的位置递增
- 数组中所有元素的最新最小元素的第五个位置
- 关于引用数组位置的问题
- 在给定元素在螺旋上的位置的情况下,在二维数组中查找元素
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 如何在 3x4 数组中随机 4 个不同的位置
- C++不同内存位置中的默认数组值
- 使用动态数组访问冲突写入位置
- 将字符串分配到动态数组位置时出错
- 查找数组位置的最大值
- 如何使用变量名称引用数组位置
- 面向对象C++帮助?出于某种原因,对象变量的输出返回数值数组位置而不是实际值
- 在 C++/CLI Visual Studio C++ 中以指定的数组位置将文本框中的值保存在 char 中
- 将名称添加到C++中的数组位置
- 如何在c++中表示数组位置的范围