我不知道是否有人会及时看到,但我会尝试...我正在上 c++ 入门课程(本科),我有一个作业要在星期一早上到期...(是的!我知道我有拖延:), )
好的。我必须以这种形式阅读学生记录:
Adriana,Smith,692493955,50,43,52,86,74,83
Adrienne,Johnson,480562092,75,72,93,71,81,89
Bla, Bla, Bla
从一个文件(最多 200 个)中排序它们和东西。
我已经设法完成所有其他必要的功能,但无法验证它们。
我做了一个应该打开文件的函数,在每一行中读取,并在每一行中读取每个令牌并将它们存储在一个临时数组中。这个 tempArr[9] 在被放入真正的数组 [9][200] 之前经过验证。
我已经设法打开文件,读入第一行并将其标记为一个数组,但是当 while 循环重复时,它再次读入文件的第一行,因此当我打印出真正的数组时,我得到 +/ -200 次第一次记录。
我反复阅读我的手册,cplusplus.com 上的 getline() 信息,在论坛中搜索并切换了我的代码大约一百万次。
请帮助!
这是fn:
void getFile(std::string realArray[][200], const int ROW_SIZE)
{
std::string filename, token, line;
int positionLine(0);
int positionToken(0);
int row(0);
int numOfLine(0);
const int ROWS (9);
const int MAX_RECORDS (200);
std::string tempArray[ROWS];
std::cout << "Please enter the desired filename with it's extension:\t ";
std::cin >> filename;
const char *file=filename.c_str();
std::ifstream input(file, std::ios::in);
while (!input.is_open())
{
std::cout << "The file did not open correctly. \n\nPlease enter a valid filename.\n";
std::cin >> filename;
const char *file=filename.c_str();
std::ifstream input(file, std::ios::in);
}
while (input.good() && numOfLine < MAX_RECORDS)
{
getline (input,line);
std::istringstream inputss (line);
while (getline(inputss, token, ',') && row < ROWS )
{
tempArray[row] = token;
row++;
}
numOfLine++;
validateData (tempArray,ROWS , numOfLine);
storeData(tempArray, ROWS, realArray, ROW_SIZE, numOfLine);
}
if (numOfLine == MAX_RECORDS)
{
std::cout << "The maximum number of records to be read (" << MAX_RECORDS << ") has been reached.\n";
}
}
PS我正在使用visual studio 2010,我的文件是* .dos
哦,我拿出了
使用命名空间标准;
因为它给出了 : cout 是模棱两可的错误。
谢谢N。