我需要做的是從輸入文件中讀取一些參數值,其中在該行的開頭加上*
來標識註釋。在「有用」行值由分號像這樣分離:C++ - 在輸出流的行首替換一個字符與另一個字符
10; 32541615; 0.18; 0.45; 0.00015; 0.01485; 0.03;
我有多行這樣在我的輸入文件。
我想要做的就是在每行的開頭插入一個*
,一旦我讀了它,如果我第二次讀該文件,我將跳過該行並直接轉到以下內容一。
我需要這個,因爲我的目標是讓我的程序的多個實例同時運行並按順序訪問文件以獲取所需的輸入參數。所以我希望每個實例都會得到不同的參數。
我想到了就去做每一行的開頭插入一個虛擬人物,像這樣:
b10; 32541615; 0.18; 0.45; 0.00015; 0.01485; 0.03;
,然後(在這個例子中b
)替換它與*
當我讀到它,以便我第二次讀到這條線就會被當作評論。
我試圖用put('*')
和<< '*'
一次我和一個peek()
調用read b
但*
角色總是在文件的末尾。我讀過,雖然我不能在文件中間寫入文件,但可以在文件中間覆蓋。我能做什麼?
這裏是一個可能的輸入文件的例子:
* FORMAT:
* MAX_HEIGHT; SEED; p0; p1; pd; pp; epsilon;
b10; 32541615; 0.18; 0.45; 0.00015; 0.01485; 0.03;
b40; 32541615; 0.18; 0; 0.00015; 0.01485; 0.03;
你不需要知道你的程序實例使用什麼參數?我可能會爲每個實例使用一個參數文件,並將該文件名作爲命令行參數傳遞。或者,如果您堅持使用單個文件,那麼我會讓每個實例從文件中的給定行讀取其參數(再次作爲命令行參數傳遞)。 Imho有幾個程序讀取和寫入同一文件的實例只是不必要的過度複雜 – user463035818
一個基本問題是,如果沒有一些額外的同步,您將無法防止多個程序實例讀取同一行之前的競爭條件他們中的任何人都會更新以更新該行。如果/當你解決了這個問題,那麼你就可以以更簡潔的方式解決你原來的問題。 –
@MichaelBurr我知道。當然,我將在實際上有多個線程同時從同一個文件讀取之前實現某種同步。但我很想知道這個問題是否有一個簡單的答案 – jackscorrow