- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个关于文件处理的项目。用户输入 ID、小时数和工资率。输出将是 ID、小时数、工资率和总工资。我完成了那些部分。我真的需要关于 try and catch 的帮助,用户输入非数字,项目拒绝并要求用户再次输入。这是我到目前为止得到的:
#include
#include
#include
#include
#include
#include "File.h"
#include
sử dụng không gian tên std;
void File::Create()
{
ofstream outClientFile("payroll.txt", ios::out);
if (!outClientFile)
{
cerr << "File could not be opened" << endl;
thoát(THOÁT_THẤT_CẦN);
}
cout << "Enter employee ID, hours and payrate" << endl
<< "Enter end-of-file to end input.\n? ";
while (cin >> id >> hours >> payrate)
{
thử
{
outClientFile << id << ' ' << hours << ' ' << payrate << endl;
cout << "? ";
}
catch (exception elementException)
{
cerr << ("Invalid input. Try again") << endl;
}
}
}
void outputLine(int, float, float, float);
void File::Read()
{
ifstream inClientFile("payroll.txt", ios::in);
if (!inClientFile)
{
cerr << "File could not be opened" << endl;
thoát(THOÁT_THẤT_CẦN);
}
cout << left << setw(15) << "Employee ID" << setw(15) << "Hours" << setw(15) << "Payrate" << setw(15) << "Grosspay" << endl << fixed << showpoint;
while (inClientFile >> id >> hours >> payrate)
outputLine(id, hours, payrate, grosspay = hours * payrate);
}
void outputLine(int id, float hours, float payrate, float grosspay)
{
cout << left << setw(7) << id << setprecision(2) << setw(8) << " , " << setw(8) << hours << setprecision(2) << setw(7)
<< " , " << "$" << setw(7) << payrate << setprecision(2) << setw(7) << " , " << "$" << grosspay << right << endl;
}
测试文件
#include "File.h"
int chính()
{
File myFile;
myFile.Create();
myFile.Read();
}
1 Câu trả lời
你不应该使用异常,除非在“异常”情况下,程序不能轻易恢复(比如内存分配错误,打开文件时出错等)。使用 trong khi
循环可以更自然地完成验证输入,如下所示:
while( ! (std::cin >> id >> hours >> payrate) ) // repeat until we read correctly
{
std::cout << "Invalid input, try again..." << std::endl;
std::cin.clear(); // clear the error flags
// ignore the rest of the stream, must #include
std::cin.ignore(std::numeric_limits::max(), '\n');
}
// now we can write the result to the file, input was validated
outClientFile << id << ' ' << hours << ' ' << payrate << endl;
nếu như cin
读取正确,那么它将转换为 bool
ĐÚNG VẬY
并且循环不会被执行。如果不是(即一些非数字输入),则 cin >> ...
的最终结果将是一个转换为 SAI
的流。在后一种情况下,您需要清除错误标志(std::cin.clear()
部分),然后删除流中剩余的其余字符(std::cin .ignore()
部分)并重复。
关于c++ - 使用try-catch C++处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29979415/
Hôm nay tôi đã thấy một số cách khác nhau để tải tệp trong ứng dụng Java. Sự khác biệt giữa ba phần mở đầu của URL: file:/ file:// file:/// là gì? Cách sử dụng chúng được ưa chuộng nhất là gì? Cảm ơn Stefan rất nhiều vì tệp trả lời hay nhất
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
Tôi có một tệp javascript và trong phương thức đó, tôi có một phương thức "kiểm tra" nơi tôi muốn gọi một hàm C#. Hàm c# không nằm trong cùng một tệp với tệp javascript. Nó nằm trong tệp .cs. Vậy làm sao tôi có thể quản lý j
Cần kiểm tra quyền của tệp/thư mục tôi đang sử dụng //filePath = đường dẫn của tệp/thư mục bị người dùng từ chối truy cập (trong windows) Tệp fil
Tôi có rất nhiều file java trong một thư mục mà tôi muốn sử dụng trong dự án Intellij của mình. Nhưng tôi không muốn sao chép các tập tin Java vào dự án của mình mỗi khi tôi bắt đầu một dự án mới. Tôi biết tôi có thể làm điều này trong Visual Studio và
Đã đóng. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến một vấn đề lập trình cụ thể, một phần mềm
Tôi có 3 tệp Twig cho các thành phần: Tệp 1: {# content-here #} Tệp 2: {{ title-here }} {# content-here #}
Tôi có các tệp mod_ldap.c và mod_authnz_ldap.c. Tôi cần sử dụng các tệp mod_ldap.so và mod_authnz_ldap.so cho các lệnh Linux. Câu trả lời hay nhất từ c
Tôi muốn sử dụng PIE để làm việc với IE7 trong dự án của mình. Nhưng điều tôi không hiểu là tôi chỉ có thể sử dụng tệp .htc trên máy chủ web phải không? Tôi có thể sử dụng nó trên trang cục bộ được tải qua trình duyệt mà không cần máy chủ web không? Tôi đã thấy trong tài liệu PIE
Tôi đang nghĩ đến điều này trong một quy trình CI, trước tiên tôi phải xây dựng và thử nghiệm ứng dụng của mình và kết quả sẽ là một hình ảnh docker. Tôi tự hỏi liệu việc sử dụng môi trường xây dựng để xây dựng trên máy chủ xây dựng rồi chạy thử nghiệm có phổ biến hơn không. Có thể sử dụng tập lệnh xây dựng cho việc này. Cuối cùng, chỉ cần j
sử dụng không gian tên std; struct WebSites { chuỗi siteName; int rank; chuỗi getSiteName() {
Tôi mới làm quen với Linux và hiện đang cố gắng sử dụng khả năng lập trình API của giao diện USB-CAN của ginkgo. Để lập trình API bằng C++, họ cung cấp các tệp thư viện bao gồm ba tệp .
Tôi vừa học ngôn ngữ C và gặp phải một vấn đề khi triển khai một chương trình sử dụng tệp test.txt làm đầu vào của chương trình. Nội dung của tệp test.txt là: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
Làm thế nào để nối hai tệp tcpdump để mỗi lưu lượng xuất hiện lần lượt trong các tệp đó? Cụ thể hơn, tôi muốn "nhân" một tệp tcpdump để tất cả các phiên sẽ được lặp lại nhiều lần theo trình tự, lần này nối tiếp lần khác. Câu trả lời tốt nhất là mergeca
Tôi có một tệp tin có tên là input.MP4 và nó bị hỏng. Đó là hình ảnh từ camera giám sát. Tôi đã thử mọi cách, chuyển đổi ffmpeg, VLC, nhưng đều không được. Tuy nhiên, tôi đã sử dụng mediainfo và exiftool và trích xuất thông tin sau
Tôi muốn làm gì? Tôi muốn giải nén một tập tin ISO và chỉnh sửa các tập tin bên trong, sau đó đóng gói lại thành một tập tin ISO. (Như bạn đã đọc) Tại sao tôi phải làm điều này? Tôi muốn bắt đầu sửa đổi PSP ISO và để làm được điều này tôi phải sử dụng tài nguyên trò chơi, Tài sản
Với một tệp gzip Z, nếu tôi giải nén nó thành Z', có cách nào tôi có thể nén lại để khôi phục lại chính xác tệp gzip Z đó không? Sau khi đọc lướt qua định dạng DEFLATE, tôi đoán là không, vì bất kỳ tệp nào cũng có thể ở định dạng DEFLATE.
Tôi phải gửi một email có tệp đính kèm từ cơ sở dữ liệu đến ID email của tôi. EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Quản trị viên Adventure Works
Tôi có một tệp M4B lớn và một tệp CUE. Tôi muốn chia nó thành nhiều tệp M4B hoặc chia nó thành nhiều tệp MP3 (ưu tiên trước đây). Tôi muốn thực hiện điều này trong dòng lệnh (OS X, nhưng có thể sử dụng Linux nếu cần) và
Câu hỏi nhanh. Tôi có một dự án với một lớp không có tệp triển khai. Sau đó trong AppDelegate tôi có: #import "AppDelegate.h" #import "SomeClass.h" @interface A
Tôi là một lập trình viên xuất sắc, rất giỏi!