簡體   English   中英

在 C++ Builder 6 中使用 ifstream 讀取 txt 文件

[英]Reading txt file using ifstream in C++ Builder 6

我正在使用 C++ BUILDER 6,我正在嘗試理解這段代碼。

我正在將 4 個變量記錄到一個 txt 文件中並獲得成功:

sprintf(buffer, "%i,%i,%i,%i", x, yMin, yMed, yMax);
ofstream logData;
logData.open("logData.txt", ios::app);
logData << buffer << "\n";

我的txt輸出:

1,1686,1784,1972
2,1687,1785,1973
3,1688,1786,1974
...

我需要閱讀這個文件來獲取變量並繪制成圖形。 我正在這樣做並且它工作正常:

std::ifstream infile(OpenDialog->FileName.c_str());
int num, y, yMin, yMax;
char a,b,c;
char buffer[100];
if(infile.is_open())
{
    while (infile >> x >> a >> yMin >> b >> yMed >> c >> yMax)
    {
        sprintf(buffer, "X: %i | YMIN: %i | YMED: %i | YMAX: %i", x, yMin, yMed, YMax);
        Memo1->Lines->Add(buffer);
    }
}

我的 Memo1 輸出:

X:1 | YMIN: 1686 | YMED: 1784 | YMAX: 1972
X:2 | YMIN: 1687 | YMED: 1785 | YMAX: 1973
X:3 | YMIN: 1688 | YMED: 1786 | YMAX: 1974
...

我的問題是: C++如何區分變量的? 我沒有得到它假設x = 1 , yMin = 1686 ... 通過 while 循環逐行讀取 txt 文件的地方:

while (infile >> x >> a >> yMin >> b >> yMed >> c >> yMax)

當代碼進入 sprint 行時:

sprintf(buffer, "X: %i | YMIN: %i | YMED: %i | YMAX: %i", x, yMin, yMed, YMax);

變量 x、yMin、yMed、YMax 已經從 txt 文件中假定了一些值。

注意:在我理解的 C++ 中需要一些 INT + CHAR + INT + CHAR ... 其中 CHAR 是一個“,”。 但是 '1' 也是一個 CHAR,如果我登錄:

1116861178411972 instead 1,1686,1784,1972

它不能正常工作。

有人可以給我一些指導嗎? 從哪里開始理解它?

當您執行infile >> x並且xint ,輸入僅讀取可能是整數值一部分的字符。 逗號不能,所以輸入操作在那里停止。

然后輸入繼續>> a尋找單個char 逗號是一個字符,所以它被讀入a .

然后它繼續嘗試讀取另一個整數,幸運的是下一部分又是數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM