基本的に困惑している問題があります。まず、trustArray[] と fashionArray[] という 2 つのグローバル配列があります。trustArray を埋める関数は次のとおりです。
void getTrust()
{
string line;
int reachedTrust=0;
int numberOfTrustsRecorded=0;
ifstream myfile ("BuyingJeans.Hw5 (1).csv");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line,',');
//int found=line.find("Like-Purchase");
if (line=="Trust-Like"){
reachedTrust=1;
getline (myfile,line,',');
}
if(reachedTrust==1){
if(numberOfTrustsRecorded <6){
double testValue = atof(line.c_str());
trustArray[numberOfTrustsRecorded] = testValue;
numberOfTrustsRecorded++;
}
}
}
myfile.close();
}
else
cout << "Unable to open file";
}
何らかの理由で、atof()
この関数の が fashionArray[] の 2 つの値を変更しています。を に変更するatof()
とatoi()
、問題は発生しなくなります。変更される配列を埋めるメソッド (fashionArray[]) は次のとおりです。
void getFashion(){
string line;
int reachedFashion=0;
int numberOfFashionsRecorded=0;
ifstream myfile ("BuyingJeans.Hw5 (1).csv");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line,',');
if (line=="Like-Fash -->"){
reachedFashion=1;
getline (myfile,line,',');
//cout<<line<<endl;
//getchar();
}
if(reachedFashion==1){
if(numberOfFashionsRecorded <6){
fashionArray[numberOfFashionsRecorded] = atoi(line.c_str());
numberOfFashionsRecorded++;
}
}
}
myfile.close();
}
else cout << "Unable to open file";
}
これら 2 つのメソッドを呼び出すメイン メソッドを次に示します。
int main () {
getFashion();
getTrust();
for(int x=0; x<6;x++)
cout<<fashionArray[x]<<endl;
getchar();
return 0;
}
fashionArray の最初の 2 つの値は、途方もなく大きな負の整数と正の整数に変更されます。興味深い点の 1 つは、main() メソッドで 2 つのメソッドが呼び出される順序を逆にすると、問題が発生しなくなることです。誰がこれを引き起こしているのか考えていますか?