cuốn sách gpt4 ai đã làm

Định dạng dữ liệu văn bản bằng C++ hoặc bất kỳ ngôn ngữ kịch bản Windows nào

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 11:13:38 27 4
mua khóa gpt4 Nike

Đây có thể là một nhiệm vụ đơn giản nhưng hiện tại tôi không thực sự biết cách thực hiện việc này một cách đơn giản. Tôi gặp tình huống sau, tôi có một đoạn script viết bằng COFFEE, ngôn ngữ kịch bản của chương trình 3D Cinema 4D. Bây giờ tập lệnh này đang ghi dữ liệu vị trí theo định dạng sau vào tệp văn bản (rtf trong trường hợp này, nhưng cũng có thể là .txt).

0 0,0 471,2 0,0
1 0,0 470,5 0,0
2 0,0 468,8 0,0
3 0,0 465,9 0,0
4 0,0 461,9 0,0
5 0,0 456,8 0,0
6 0,0 450,5 0,0
7 0,0 443,2 0,0
8 0,0 434,8 0,0
9 0,0 425,2 0,0

Khung,X,Y,Z.

Bây giờ điều tôi cần làm là chuyển đổi dữ liệu vị trí sang định dạng này:

Chuyển đổi vị trí
Khung X pixel Y pixel Z pixel
0 0,0 471,2 0,0
1 0,0 470,5 0,0
2 0,0 468,8 0,0


Kết thúc dữ liệu khung hình chính

Nó không thực sự hiển thị ở đây, nhưng không có khoảng trắng ở đây và mọi thứ được phân tách bằng các tab (có thể sao chép phần này vào notepad để thực sự nhìn thấy các tab). Điều quan trọng là tôi có các tab giữa mỗi số, có thể có dấu cách nhưng mỗi lần tôi chỉ cần một tab. Vì vậy, phần quan trọng là làm cách nào để lấy những số này từ tập dữ liệu đầu tiên và yêu cầu chương trình thêm \t giữa mỗi số?

Tôi đã thử thực hiện điều này trong một tập lệnh nhưng nếu tôi sử dụng các tab thay vì nhiều khoảng trắng giữa các vị trí thì tập lệnh sẽ không thành công. Tôi đã tìm kiếm rất nhiều nhưng không thể tìm thấy giải pháp tốt nào. Tôi quen thuộc với C++ và một số tập lệnh bó, nhưng tôi hài lòng với mọi giải pháp, ngay cả khi tôi phải học những điều cơ bản của ngôn ngữ khác.

Tôi đã cố gắng tìm cách trong C++ nhưng phương pháp tôi nghĩ ra không thể định dạng n hàng và mỗi hàng quá phức tạp. Số lượng khung/dòng thay đổi mỗi lần nên tôi không bao giờ có số dòng cố định.

câu trả lời hay nhất

Một cái gì đó như thế này có thể hoạt động. Tôi không thực hiện bất kỳ định dạng đặc biệt nào cho các số, vì vậy bạn sẽ cần thêm nó nếu cần. Nếu bạn lo lắng về tệp đầu vào không đúng định dạng, chẳng hạn như không đủ số trên một dòng, thì bạn sẽ muốn thêm một số tính năng kiểm tra lỗi bổ sung để ngăn chặn điều này.

#include 
#include
#include

bool Convert(const char* Tên tệp đầu vào, const char* Tên tệp đầu ra)
{
std::ifstream InFile(InputFilename);
nếu(!InFile)
{
std::cout << "Không thể mở tệp đầu vào '" << Tên tệp đầu vào << "'" << std::endl;
trả về sai;
}

cấu trúc dữ liệu vị trí
{
số khung đôi;
đôi X;
đôi Y;
đôi Z;
};
typedef std::vector Vị tríVec;

Vị tríVecVec;
Vị trí dữ liệu vị trí;
trong khi(InFile)
{
InFile >> Pos.FrameNum >> Pos.X >> Pos.Y >> Pos.Z;
Vị trí.push_back(Pos);
}

std::ofstream OutFile(OutputFilename);
if(!OutFile)
{
std::cout << "Không thể mở tệp đầu ra '" << OutputFilename << "'" << std::endl;
trả về sai;
}

OutFile << "Transform\tPosition\n\tFrame\tX pixels\tY pixels\tZ pixels" << std::endl;
for(PositionVec::iterator it =positions.begin(); it !=Positions.end(); ++it)
{
const Vị tríData& p(*it);
OutFile << "\t" << p.FrameNum << "\t" << pX << "\t" << pY << "\t" << pZ << std::endl;
}
OutFile << "Kết thúc dữ liệu khung chính" << std::endl;
trả về đúng sự thật;
}

int main(int argc, char* argv[])
{
nếu(argc < 3)
{
std::cout << "Cách sử dụng: chuyển đổi " << std::endl;
return 0;
}
bool Thành công = Convert(argv[1], argv[2]);

trả về Thành công;
}

Về c++ - Định dạng dữ liệu văn bản bằng C++ hoặc bất kỳ ngôn ngữ kịch bản Windows nào, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11487878/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress