我目前在我的程序有麻煩。我想修改從第76行到第81行的文本文件中只有6行,我不知道該怎麼做。C++ |文本文件hardtime(行編輯)
我想在這些行的最後添加一些東西(或者如果它更容易替換,請不要修改任何其他行(也許檢查修改是否已經發生,但是這是獎金)。
我發現自己失去了在谷歌尋找答案,你可以幫我嗎?
我目前在我的程序有麻煩。我想修改從第76行到第81行的文本文件中只有6行,我不知道該怎麼做。C++ |文本文件hardtime(行編輯)
我想在這些行的最後添加一些東西(或者如果它更容易替換,請不要修改任何其他行(也許檢查修改是否已經發生,但是這是獎金)。
我發現自己失去了在谷歌尋找答案,你可以幫我嗎?
如果您的替換文本是相同,確切長度爲作爲原始文本,您可以打開該文件作爲讀/寫並覆蓋文本。
傳統的方法(因爲卷軸到卷軸磁帶),已經將未修改的文本複製到新文件,然後是修改後的文本,然後是原始文本的其餘部分。
我推薦使用std::getline
和std::string
。
如果您確實需要性能,您可能需要考慮雙緩衝。
編輯1:示例
for (unsigned int i = 0; i < 76; ++i)
{
std::string text;
std::getline(original_file, text);
new_file << text << "\n";
}
// Write new text to new file
// Read old text and ignore it.
// Copy remaining text to new file.
背景
雖然文件可以被視爲隨機存取(這意味着你可以尋求的隨機位置),則文本是不固定長度。一般來說,文本文件可以被視爲包含可變長度的文本記錄。 計數行的唯一方法是讀取直到找到換行符。因此,爲了尋找第76行,必須計算行結尾,直到找到第76行。
不幸的是它的長度不一樣,它基本上與額外的字符。 –
由於長度不一樣,所以無法覆蓋。文件不會在中間擴展;唯一的操作是覆蓋。 –
我強烈建議使用純文本編輯器。在編輯它之前,您應該使文件可讀寫。 –
_「你可以幫我嗎?」_可能不是。對於你的問題有很多可能的解決方案,你的問題不是要求輸出特定的問題。 –
您可以簡單地在每行的開頭添加行號。所以,當你閱讀它時,你可以檢查第一個項目的值是> = 76和<= 81,並且如果條件滿足則修改這些行... –