Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用输入的表头从文本文件列读取值_C++_File - Fatal编程技术网

C++ 使用输入的表头从文本文件列读取值

C++ 使用输入的表头从文本文件列读取值,c++,file,C++,File,我不确定我的措辞是否正确,但这是事实 我读过一个文本文件,它的输出如下: C14 C16 C18 C20 C22 C24 C27 C30 C35 C40 C45 C50 D30 D35 D40 D50 D60 D70 ft0k 8 10 11 12 13 14 16 18 21 24 27 30 18 21 24 30 36 42 fc0k 16 17 18 19 20 21 22 23 25 26 27 29 23

我不确定我的措辞是否正确,但这是事实

我读过一个文本文件,它的输出如下:

    C14 C16 C18 C20 C22 C24 C27 C30 C35 C40 C45 C50 D30 D35 D40 D50 D60 D70
ft0k    8   10  11  12  13  14  16  18  21  24  27  30  18  21  24  30  36  42
fc0k    16  17  18  19  20  21  22  23  25  26  27  29  23  25  26  29  32  34
density 290 310 320 330 340 350 370 380 400 420 440 460 530 560 590 650 700 900 
我有
cin>>木版

如果用户输入C14,我希望它得到值8、16、290 或者如果他们输入C22,我想要12,19,330

有人知道我该怎么做吗

我对C++很陌生,我不确定从哪里开始。

谢谢

编辑------附加代码

这将获取文件数据

std::ifstream ifs ("strength_classes.txt", std::ifstream::in);

char c = ifs.get();


while (ifs.good()) {
    std::cout << c;
    c = ifs.get();
}

ifs.close();

那么你已经读入数据了?你把它放进了什么样的数据结构?通常,您需要迭代数据(查找键,例如“C14”),一旦找到它,就检索相关数据

例如,如果您有以下数据:

class WoodData {
public:
   string name;
   int ft0k;
   int fc0k;
   int density;
};
并将其列在如下列表中:

std::list<WoodData> woodTypes;
auto iterWood = std::find_if( woodTypes.begin(), woodTypes.end(), [&woodType](const WoodData& aWood) {
                        return aWood.name == woodType; }
                         );
if (iterWood != woodTypes.end() ) { /* do your thing */ }

(这取决于支持lambdas的编译器,即C++11。)

类似于此表。你能展示一下到目前为止你都做了些什么吗?看起来一个简单的多维数组就可以了。是的,这就是表格,好的,我将编辑答案并粘贴相关代码@kingcheck
std::list<WoodData> woodTypes;
auto iterWood = std::find_if( woodTypes.begin(), woodTypes.end(), [&woodType](const WoodData& aWood) {
                        return aWood.name == woodType; }
                         );
if (iterWood != woodTypes.end() ) { /* do your thing */ }