イムかなり新しい、まだ「現在の関数の境界を見つけることができない」 - そう、私を許してください私のコードは(まだ改善するために、任意の提案に開いてイム;)まだ完璧ではない場合)C++エラー:++プログラミングcの
Iをこのコードを実行する際に問題があります(大きなプロジェクトの一部のみ)。
int stock::import(string file){
ifstream input;
input.open(file.c_str());
input.ignore(100000, '\n');
while(!input.eof()){
int y = 0;
int m = 0;
int d = 0;
string year;
string month;
string day;
string open;
string high;
string low;
string close;
string volume;
string adj;
{
getline(input, year, '-');
y = atoi(year.c_str());
}
{
getline(input, month, '-');
m = atoi(month.c_str());
}
{
getline(input, day, ',');
d = atoi(day.c_str());
}
int index = findplace(y, m, d);
values[index].year = y;
values[index].month = m;
values[index].day = d;
{
getline(input, open, ',');
values[index].open = open;
}
{
getline(input, high, ',');
values[index].high = high;
}
{
getline(input, low, ',');
values[index].low = low;
}
{
getline(input, close, ',');
values[index].close = close;
}
{
getline(input, volume, ',');
values[index].volume = volume;
}
{
getline(input, adj, '\n');
values[index].adj = adj;
}
}
return 0;}
プロジェクトは正常にコンパイルされますが、関数 "import"が呼び出されるとすぐにプログラムがクラッシュします。デバッガは、エラーコードのこの部分では、「現在の関数のバインド見つけることができない」と私に戻っています:
{
getline(input, open, ',');
values[index].open = open;
}
奇妙なことは、私はこのコードの一部を削除する場合に、次のとおりです。
{
getline(input, year, '-');
y = atoi(year.c_str());
}
私のプログラマーがうまく動作するクリティカルセクションのいくつかの行(クラッシュしないことを意味するが、もちろんそれはやるべきことをしない)。
現在CodeBlocksをIDEとして認識していません。
誰もがこれを手伝ってくれますか?ここで示唆したように、私はすでに...
を私が知っているすべてのものを試してみたように私は)値とfindplace(詳細情報である今では本当に必死だ:
class stock{
private:
string name = "";
string code = "";
string number = "";
stock* next = NULL;
int findplace(int year, int month, int day);
public:
day* values = new day[30];
stock(string c);
string getindex();
void setnext(stock* n);
stock* getnext();
int import(string file);
};
ので、基本的には[]ちょうど配列である値クラスからオブジェクトへのポインタの「日」 クラス「日」は次のようになります。
class day{
public:
int year = 0;
int month = 0;
int day = 0;
string open;
string high;
string low;
string close;
string volume;
string adj;
};
と関数findplace(中)配列が日付でソートされるように、私は疲れて、配列に新しい一日を挿入します常に最新の日を保持し、最も古いwを破棄しますhenは新しいものを挿入します。
int stock::findplace(int year, int month, int day){
int j = 29;
for(j; values[j].year > year; j--){
}
for(j; values[j].month > month; j--){
}
for(j; values[j].day > day; j--){
}
if(!(values[j].year == year && values[j].month == month && values[j].day == day)){
delete &values[0];
for(int i = 0; i < j; i++){
values[i] = values[i+1];
}
}
return j;
}
重要ではない重要な部分を除外して、多くのコードを提供しました。 [MCVE]の制作については、このリンクをお読みください。特に、 'values'変数の詳細を知らなくても、あなたを助けるのは難しいです。 –
'while(!input.eof()){' [なぜ、feof-file-always-wrong](http://stackoverflow.com/questions/5431941/why-is-while-feof-file) -always-wrong) – synchronizer
あなたは決してエラーをチェックしません.... – SingerOfTheFall