c ++读取文本文件,\ 377开始无限打印

时间:2014-02-11 04:23:45

标签: c++ fstream

我正在尝试在文本文档中写一些内容然后提取它然后打印它们但是当我这样做时,它会打印出除第一个单词之外的单词,然后它会无限地开始打印出来“\ 377 “我认为这与文件没有正确关闭有关,但我不知道如何正确关闭它,我教我的自我c ++,我只是自己发现这些东西,但这让我很困惑。我正在尝试在文本文档上写下字母S,D,T,然后将它们作为个体阅读,然后将它们保存为字符串然后打印出来。

//
//  main.cpp
//  test prep
//
//  Created by Sylvain Jones on 2/10/14.
//

#include <iostream>
#include <fstream>

using namespace std;

void makeFile () {
fstream outfile("file.txt", fstream::out);
outfile << "S S D T 0";
outfile.close();
}

void readFile () {
    ifstream file;
    file.open("file.txt");
    string word;
    char x ;
    word.clear();
    int score, runners = 0;
    int srunners[100];

    while (file >> word) {
        x = file.get();
        while (x != 0) {
            word = word + x;
            x = file.get();
            cout << x << endl;
            if (x == ' ') {
            if (word == "S") {
                score = score + 1;
                runners++;
                srunners[runners] += 1;
            }
            else {
                if (word == "D") {
                    score = score + 2;
                    runners++;
                    srunners[runners] += 2;
                }
                else {
                    if (word == "T") {
                        score = score + 3;
                        runners++;
                        srunners[runners] += 3;
                    }
                }
            }
        }
    }
}
}

int main(int argc, const char * argv[])
{
makeFile();
cout << "file made\n\n";
readFile();
}

2 个答案:

答案 0 :(得分:0)

记下笔记。

int get(); // Reads a single character and returns int not char

返回一个整数而不是一个字符。

检查文档 http://www.cplusplus.com/reference/istream/istream/get/

因此请务必检查-1以停止读取文件 readFile方法中的第二个while循环应该如下所示

while ((x = file.get()) != EOF){

}

EOF定义为-1

#define EOF (-1)

答案 1 :(得分:-1)

我不确定

while (file >> word)

也许你应该使用

while (!file.eof())