Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从文件c+中读取字符+;_C++ - Fatal编程技术网

C++ 从文件c+中读取字符+;

C++ 从文件c+中读取字符+;,c++,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
但问题是,在运行以下代码时:

    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中,但如何使用这种方法或类似方法解决它?

尝试以下方法:

char c;
string string1;
while ((c = fgetc(file))  == '#') {
    string1 += c;
    while ((c = fgetc(file)) != '\n') {
        string1 += c;
    }
    string1 += c;
}
因为在程序退出第二个循环后,c的值是“\n”,您可以将其放入string1

这是我的test.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;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
字符c;
弦1;
FILE*FILE=fopen(“test.in”,“r”);
而((c=fgetc(文件))='#'){
string1+=c;
而((c=fgetc(文件))!='\n'){
string1+=c;
}
string1+=c;
}

可以认为代码没有输出,也不完全清楚您希望输出是什么。@EduardoLeón-
getline
也会吞并换行符。