我正在为一个更大的程序验证一个数据文件。我在代码的最后一部分,并试图通过字符串本身确保两个单独的数组彼此“相等”。我已经包含了我最近尝试的代码。请原谅我,因为我已经发布了整个功能。
这里是:
//
// validateDataFile.cpp
// P1
//
// Created by xxxxxxx on 3/26/13.
// Copyright (c) 2013 xxxxxxx. All rights reserved.
//
#include "p1.h"
void validateDataFile (string fileName) {
fstream file;
file.open (fileName.c_str());
if (file.is_open()) {
unsigned int i, j, x = 0, y = 0, a;
int flag = 0, check = 0;
string fileData, word, strg[200];
getline (file, fileData);
for (i = 0; i < fileData.length(); i++) {
if ((fileData[i] == ' ') || (fileData[i] < 48) || (fileData[i] > 57)) {
cout << "fileData[i]: " << fileData[i] << endl;
cout << "Incorrect DataFile!\nFirst line should contain a positive"
" integer and no white space" << endl;
return;
}
}
int numberOfNodes = convertToInt(fileData);
string list[numberOfNodes];
if (numberOfNodes < 0) {
cout << "Number of Nodes: " << numberOfNodes << endl;
cout << "Incorrect DataFile!\nFirst character should be a positive"
"integer" << endl;
return;
}
getline (file, fileData);
stringstream stream (fileData);
while (getline (stream, word, ' ')) {
list[x++] = word;
for (a = 0; a < numberOfNodes; a++) {
cout << "list of nodes: " << list[a] << endl; //testing only
}
}
if (x != numberOfNodes) {
cout << "Incorrect DataFile!\nList of strings has more strings than"
" the number of nodes specified in the first line." << endl;
return;
}
while (!file.eof()){
getline (file, fileData);
stringstream ss (fileData);
while (getline (ss, word, ' ')) {
if (convertToInt(word) < 0) {
flag = 0;
for (i = 0; i < y; i++) {
if (strg[i] == word) flag = 1;
}
if (flag == 0) strg[y++] = word;
}
}
}
for (i = 0; i < y; i++) { //<- my problem starts here
check = 0;
for (j = 0; j < x; j++) {
if (strg[i].compare (list[j]) == 0) {
check = 1; //<- my problem ends here
break;
}
}
}
if (check == 0) {
cout << "Incorrect DataFile!\nStrings listed should match Node Strings" << endl;
return;
}
}
else {
cout << "ERROR!\n DataFile not present." << endl;
return;
}
file.close();
}
它编译没有错误,但没有做我想要的。
我故意更改了我的数据文件以创建错误,但由于某种原因它没有告诉我我的比较不正确。
这是我的数据文件的一小部分:
16
Cape Birmingham Boston Chicago Dallas Detroit KansasCity LosAngeles Memphis Minneapolis Omaha Orlando Richmond SanFrancisco Seattle StLouis
Atlanta Chicago 718
Atlanta Dallas 781
Atlanta Orlando 439
Birmingham Atlanta 146
Birmingham Detroit 723
Birmingham Richmond 678
Boston Atlanta 1099
Boston Detroit 716
Boston Memphis 1311
Chicago Atlanta 718
Chicago Boston 983
Chicago KansasCity 526
我故意将第一个城市从“亚特兰大”改为“开普”。有人可以告诉我我的错误并告诉我需要做些什么来纠正它吗?谢谢!