只要結果是相同長度的原始(或者更短,而你不知道介意增加空間覆蓋差)這是很容易:尋求到你想要做的修改,寫入新的數據,你就大功告成了:
#include <fstream>
#include <ios>
int main() {
std::fstream file("yourfile.txt", std::ios::in | std::ios::out);
file.seekp(7);
file << "19";
return 0;
}
如果你想寫韓元」的數據t「適合」你想保存的其他東西之間,你需要重新編寫剩餘的文件,通常從舊文件複製到新文件,根據需要修改數據H。
編輯:這樣的事情:
#include <fstream>
#include <ios>
#include <iterator>
#include <vector>
int main() {
std::vector<double> data;
std::fstream file("yourfile.txt", std::ios::in | std::ios::out);
std::copy(std::istream_iterator<double>(file),
std::istream_iterator<double>(),
std::back_inserter(data));
file.clear();
file.seekp(0);
data[2] = 19.98;
std::copy(data.begin(), data.end(), std::ostream_iterator<double>(file, " "));
return 0;
}
這有一些效果,您可能不希望 - 尤其是,因爲它的立場,它破壞了任何「線」結構導向原來可能有,和只需將結果寫成一條長長的一行。如果你想避免這種情況,你可以(例如)一次讀一行,轉換行中的數字(例如,把它放到一個字符串流中,然後將它們讀出來作爲雙打),修改它們,把它們返回到一個字符串中,並在最後用「\ n」寫出該行。
你想從第三項減去一個嗎?可能第三項是否定的? – Potatoswatter 2010-03-20 23:33:45