我有四个列表,每个列表包含84种不同的速率,我希望能够根据输入的信息使用if / else语句进行访问,我希望有一些更有效的方法,而不是将每个列表输入数组。
最简单的方法是什么?任何提示都非常有用我只需要一个起点。
#include "MaleNonSmoker.txt"
using namespace std;
double ratesmn[85] = {
#include "MaleNonSmoker.txt"
- 1
};
#include <iostream>
#include <string>
#define STARTAGE 15
int main() {
double const *rates;
rates = ratesmn;
int age;
cout << "How old are you?\n";
cin >> age;
double myrate = ratesmn[age - STARTAGE];
return 0;
}
我得到的错误来自第1行:语法错误:&#39;常数&#39; 从第7行开始:&#39;太多的初始化者&#39;
答案 0 :(得分:3)
如果数字没有改变,则无需在运行时从文件中读取数字。您也可以在编译时使用它们。
使用您喜欢的任何工具创建包含数组的四个文件,但每个数字后面都有一个逗号,如下所示:
51,
52,
53,
在c ++代码中,定义4个数组,并使用#include
包含文本文件中的数字;
int ratesms[85] = {
#include "ratesms.txt"
-1 // add another number because the txt file ends with a comma
};
对其他阵列执行相同的操作。
在您的代码中确定您要使用的列表,并设置指向该列表的指针,例如
int const *rates;
if ( /* smoking male */ )
rates = ratesms;
else if ( /* other variations */ )
rates = ...
然后像这样使用它;
#define STARTAGE 15
int age=35; // example
int myrate=rates[age-STARTAGE];
如果您不想从数组索引中减去起始年龄,您还可以向数组中添加15个虚拟数字;
int ratesms[100] = {
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
#include "ratesms.txt"
-1 // add another number because the txt file ends with a comma
};
现在ratesms[15]
将包含txt文件中的第一个数字。
答案 1 :(得分:0)
您可以在C ++中定义一个数字数组,如下所示:
int[6] rates = {1, 2, 3, 4, 5, 6};
答案 2 :(得分:0)
&#34;列表的格式是什么?&#34;
读取它们应该非常简单 - 在C ++中查看文件I / O上的this教程。如果将列表保存为简单的.txt文件,则可以通过创建ifstream并调用getline()来逐行读取每个列表项。文件数据将被读取为字符串,因此您可以使用stoi()和stod()将它们分别转换为整数和双精度(请查看the string reference以获取更多转换方法)。
您还可能希望将excel文件保存为逗号分隔值(.csv)文件,然后可以按相同方式逐行读取。每行代表一行,单元格值以逗号分隔,非常容易解析。