我使用下面的函數:C++:ifstream刪除文件的內容?
int getline_count()
{
boost::smatch resultc;
string sLine;
int line_add_tmp;
ifstream infile;
infile.open("scripts.txt", ios_base::in);
if (!infile){
cerr << "scripts.txt could not be opened!" << endl;
}
else {
getline(infile, sLine);
if (boost::regex_match(sLine, c)) {
line_add = 2;
}
else {
line_add = 1;
}
return line_add;
infile.close();
}
}
內涵的上述功能是測試文件中的第一行包含「//新的」如果爲真,則返回2。如果爲false,則返回1。迄今爲止,這工作得很好。
我感到困惑的是,運行後文件scripts.txt爲空。這怎麼可能是因爲
1.)'// new'行被正確識別爲我得到'2'返回(運行在一個空文件返回1預期)。因此,它不能是打開scripts.txt它的文件中,用一個空文件
2)ifstream的覆蓋被設計爲只讀
這是什麼,我缺少的是什麼?
編輯:
對於C定義是
static const boost::regex
c("^(\\/)(\\/)(new|New| new| New)"); // Regexp for line count
您能否給我們定義'c'? –
@Rhymoid我敢打賭它是:「// new」 –
你的函數應該給你*至少* 2個編譯器警告。請先解決明顯的問題,然後提供[MCVE]。 – nvoigt