从文件c ++中读取字符

时间:2013-12-14 00:26:18

标签: c++

我有一个这种格式的文件:

# This is one comment
# Another comment

但问题是运行以下代码时:

    char c;
    string string1;
    while ((c = fgetc(file))  == '#') {
        string1 += c;
        while ((c = fgetc(file)) != '\n') {
            string1 += c;
        }
    }

输出结果为:

# This is one comment# Another comment

我知道在第二个中,第一个注释中的'\ n'没有保存在string1中,但是如何用这种方法或类似方法解决呢?

1 个答案:

答案 0 :(得分:1)

试试这个:

char c;
string string1;
while ((c = fgetc(file))  == '#') {
    string1 += c;
    while ((c = fgetc(file)) != '\n') {
        string1 += c;
    }
    string1 += c;
}

因为在程序退出第二个循环后, c 的值为'\ n',您可以将它放在 string1

这是我的测试.cpp文件,您可以尝试一下:

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;

int main(){
    char c;
    string string1;
    FILE * file = fopen("test.in","r");

    while ((c = fgetc(file))  == '#') {
        string1 += c;
        while ((c = fgetc(file)) != '\n') {
            string1 += c;
        }
        string1 += c;
    }
    cout<<string1<<endl;

    return 0;
}

“test.in”是您想输入的文字。

感谢。