C ++ 101 - 看起来我在某个地方有一个无限循环,但不知道我做错了什么

时间:2017-03-30 05:26:00

标签: c++

所以我有一个编程项目,这是迄今为止我必须做的最困难的项目。我们会收到一份文件,其中列出了人员的姓名,生日和工资。除此之外,我们必须确保每个名称都以正确的方式格式化(LASTNAME,FIRST MIDDLE(如果有的话))...目前,以下代码用于提取其姓氏,假设格式不正确(第一个中期最后一次)。该文件的第一行是 Matthew Alan Aberegg 1963 452,627 而正确的输出将是 Aberegg,Matthew Alan 1963 452,627

我还要做其他一些事情,但这就是我被困的地方。这特别困难,因为有些名称只有第一个和最后一个,只有一些名称格式不正确。我评论了第一个while循环,因为我试图让它甚至只为一个名称工作。

作为旁注,评论" cout"在开头只显示我添加一个endl;到最后......否则它完全被忽略了。在整个代码中似乎都是这种情况。我真的不明白这是怎么回事,但无论如何,我有比这更大的问题。

在Mac上使用Eclipse,如果这会改变任何内容。

我确定有一些误用cctype函数或我可以缩短代码的方法。欢迎任何建议! 感谢任何帮助,说真的,我已经坚持了太长时间。

#include <iostream>
#include <string>
#include <fstream>
#include <cctype>

using namespace std;

int main() {
//cout << "test";
ifstream fileIn;        // for input files
ofstream fileOut;       // for output files
string currentLine;     // for analyzing current line
fileIn.open("oldretirement.txt");
fileOut.open("newretirement.txt");  // TODO: move this closer to where it's needed

// TODO: make sure file opens first (while loop?)
int count = 0;  // for parsing through each line
int count2 = 0; // for rearranging the name TODO: rename/is this needed?
int pos;        // finds the position of first comma
string name;    // for rearranging the name if not in correct format
bool rearranged = false; // for rearranging, true if the name is rearranged


//while(!fileIn.eof()){ // while the file is not at its end
    getline(fileIn, currentLine);
    //cout << currentLine;
    for(count = 0; count < currentLine.length(); count++){
        pos = currentLine.find_first_of(',');
    //  cout << pos<<endl;
        if(isdigit(currentLine[pos-1])){
            count2 = 0;

            while(count2 < currentLine.length()){ // change this condition?

                if(isdigit(currentLine[count2])){
                    cout << count2 <<endl; //test
                    count2 = count2 - 2; // goes back
                    while(!isspace(currentLine[count2])){
                        count--;
                    }
                    name = currentLine.substr(count2, currentLine.find(" "));
                }
                count++;
            }
        }
    }
//  }
fileIn.close();
fileOut.close();

return 0;
}

0 个答案:

没有答案