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
也会吞并换行符。