与字符串对应的访问号
Access number that corresponds to string
假设我有以下变量:
int number1 = 2;
int number2 = 4;
...
int numbern = 43;
现在我想要的是在数字' I '的for循环中访问这些元素,就像下面这样:
for (int i = 0; i < n; i++)
{
if(number1 == someFunc("number" + to_string(i)))
{
// do stuff
}
}
这里'someFunc'应该确保它识别出我想要使用字符串对应的数字。我怎么能这么做?
对于使用std::map,您可以这样做:
#include <iostream>
#include <stdlib.h>
#include <map>
#include <string>
using namespace std;
int main (void)
{
map<string,int> mymap;
mymap["number1"] = 2;
mymap["number2"] = 4;
/* ... */
char number[2];
number[1] = ' ';
for(int ii=1; ii<=2; ii++)
{
number[0] = (char)(ii+48);
cout << string("number")+string(number) << ": ";
mymap[string("number")+string(number)] += 1;
cout << mymap[string("number")+string(number)] << endl;
}
return 0;
}
这是字符串,您可以通过该字符串访问实际号码。在这个例子中,我没有确保键实际存在,无论如何,这应该正常完成。
如果数字的数量不是很大,那么你可以写
int i = 0;
for ( int x : { number1, number2, /* other numbers */ numbern } )
{
if ( x == someFunc( "number" + to_string( i ) ) )
{
// do stuff
}
++i;
}
我可以想到以下两个选项:
-
使用数组
int numbers[] = {/* Put the initialization data*/}; .... if(number1 == someFunc(numbers[i]))
-
使用地图。如果可以更改数组的大小,或者期望键不遵循通常的数组索引值,则此选项非常有用。
std::map<int, int> numbers; // Add code to initialize the map. .... if(number1 == someFunc(numbers[i]))
相关文章:
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 当我用"ñ"字符循环访问字符串时出现奇怪的结果
- C++字符串问题-如何访问字符串元素
- C++/CLI访问字符串::来自非CLI代码的格式
- 循环访问字符串片段
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 关于在C++中访问字符串字母
- 访问字符串::c_str()的结果时出现瓦尔格林德内存访问错误
- 访问字符串元素地址
- 循环访问字符串C++
- 嵌入式零件终端UB之后,正在访问字符串的部分
- 如何访问字符串的元素?
- 为什么通过string.h访问C++字符串类有效
- 循环访问字符串 C++ 中的行
- 如何使用 offset 运算符访问字符串的字符,并且字符串位于字符串向量中
- 如果我无法访问字符串变量,如何检查 NULL(空/0) 字符串
- 如何循环访问字符串中的每个字符
- C++ exc_bad_access从unordered_map中指向的对象访问字符串字段
- 循环访问字符串 (STL)
- 通过迭代器访问字符串向量中的字符