[英]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
並且x
是int
,輸入僅讀取可能是整數值一部分的字符。 逗號不能,所以輸入操作在那里停止。
然后輸入繼續>> a
尋找單個char
。 逗號是一個字符,所以它被讀入a
.
然后它繼續嘗試讀取另一個整數,幸運的是下一部分又是數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.