C++ 尝试从阵列打印时Cpp访问冲突读取位置
我试图创建一个程序,当一个单词被插入到文本文档中时。定义被输出到控制台。然而,每当我试图输出定义时,我会在std::cout x行上得到“访问冲突读取位置”; 如果(x==Dict[i]) {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
好吧,你在用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;
}
}
}