从文本文件C ++中读取时检测行尾

时间:2017-02-06 21:28:35

标签: c++ file-io

我正在尝试使用>>流运算符来阅读基于文本的文件,但这似乎是逐字阅读文件:

void printFile(char filename[])
{
    ifstream input;
    input.open(filename);

    char output[50];
    if (input.is_open()) {
        while (!input.eof()) {
            input >> output;
            cout << output << endl;
        }
    }
    else cout << "File is not open!";

    input.close();
    cout << endl;
}

唯一的问题是它不会打印出换行符。

请注意我还在学习C ++,目标是在没有using string s的情况下实现这一目标(所以没有getline)。有没有办法做到这一点,还是根本不可能?

2 个答案:

答案 0 :(得分:0)

感谢@odin我通过逐个字符而不是单词读取文件来找到解决方案:

void printFile(char filename[])
{
    char ch;
    fstream fin(filename, fstream::in);
    while (fin >> noskipws >> ch) {
        cout << ch;
    }
    fin.close();
}

答案 1 :(得分:0)

您可以按照以下方式确定行的结尾

int main(){

    char ch;
    fstream fin("filename.txt", fstream::in);
    while(fin >> noskipws >> ch){
        if(ch == '\n') {   // detects the end of the line
            cout << "This is end of the line" << endl;
        }
    }
    return 0;
}