我有一个问题,我基本上对此感到困惑。首先,我有两个全局数组 - trustArray[] 和 fashionArray[]。这是填充 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[] 中的两个值。如果我将其更改为atof()
an 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";
}
下面是调用这两个方法的主要方法:
int main () {
getFashion();
getTrust();
for(int x=0; x<6;x++)
cout<<fashionArray[x]<<endl;
getchar();
return 0;
}
fashionArray 的前两个值最终被更改为一些大得离谱的负整数和正整数。一件有趣的事情是,如果我颠倒在 main() 方法中调用这两个方法的顺序,问题就不再发生了。任何人都知道可能导致这种情况的原因是什么?