Làm cách nào để đọc nổi từ tệp .txt. Tùy thuộc vào tên ở đầu mỗi dòng tôi muốn đọc một số tọa độ khác nhau. Các phao được phân cách bởi "không gian".Đọc nổi từ tệp .txt
Ví dụ: triangle 1.2 -2.4 3.0
Kết quả sẽ là: float x = 1.2/float y = -2.4/float z = 3.0
Các tập tin có nhiều dòng với differens hình dạng mà có thể phức tạp hơn, nhưng tôi nghĩ rằng nếu tôi biết làm thế nào để làm một trong số họ tôi có thể làm những người khác một mình.
My Mã cho đến nay:
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
ifstream source; // build a read-Stream
source.open("text.txt", ios_base::in); // open data
if (!source) { // if it does not work
cerr << "Can't open Data!\n";
}
else { // if it worked
char c;
source.get(c); // get first character
if(c == 't'){ // if c is 't' read in 3 floats
float x;
float y;
float z;
while(c != ' '){ // go to the next space
source.get(c);
}
//TO DO ?????? // but now I don't know how to read the floats
}
else if(c == 'r'){ // only two floats needed
float x;
float y;
while(c != ' '){ // go to the next space
source.get(c);
}
//TO DO ??????
}
else if(c == 'p'){ // only one float needed
float x;
while(c != ' '){ // go to the next space
source.get(c);
}
//TODO ???????
}
else{
cerr << "Unknown shape!\n";
}
}
return 0;
}
Có bạn đã thử [sscanf()] (http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/)? – jedwards
Ngoài ra, một vài dòng từ tệp văn bản của bạn có thể giúp xác thực bất kỳ mã nào mà mọi người đề xuất. – jedwards
@jedwards Xét rằng đó là C++, 'sscanf' sẽ không tốt hơn nhiều so với rác 'getc' này. –