C++ 尝试从阵列打印时Cpp访问冲突读取位置

C++ 尝试从阵列打印时Cpp访问冲突读取位置,c++,arrays,function,class,compiler-errors,C++,Arrays,Function,Class,Compiler Errors,我试图创建一个程序,当一个单词被插入到文本文档中时。定义被输出到控制台。然而,每当我试图输出定义时,我会在std::cout x行上得到“访问冲突读取位置”; 如果(x==Dict[i]) { 好吧,你在用i=0到13(sizeof(Dict))迭代Dict,然后突然你尝试访问i+1…现在,你认为当i=13时会发生什么?啊,我明白了。谢谢你指出sizeof(Dict)将是14*sizeof(std::string),这有点太多了 #pragma once #include <iostrea

我试图创建一个程序,当一个单词被插入到文本文档中时。定义被输出到控制台。然而,每当我试图输出定义时,我会在std::cout x行上得到“访问冲突读取位置”; 如果(x==Dict[i]) {
好吧,你在用i=0到13(sizeof(Dict))迭代Dict,然后突然你尝试访问i+1…现在,你认为当i=13时会发生什么?啊,我明白了。谢谢你指出
sizeof(Dict)
将是
14*sizeof(std::string)
,这有点太多了
#pragma once
#include <iostream>
class Synonym
{
public:
    std::string Dict[14] = {"foo1", "a two o's file", "fooo2,", "a three o's file", "foooo3", "a four o's file", "fooooo4", "a five o's file", "foooooo5", "a six o's file", "fooooooo", "a seven o's file"};
    ~Synonym();
    void checkEqual();
};
#include "Synonym.h"
#include <iostream>
#include <fstream>


Synonym::~Synonym()
{

}

void Synonym::checkEqual()
{
    std::ifstream fin;
    fin.open("Synonym.txt");
    std::string x;

    for (int i = 0; i < sizeof(Dict); ++i)
    {
        fin >> x;
        if (x == Dict[i])
        {
            std::cout << Dict[i+1] << std::endl;
        }
        
    }
}