- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Mục tiêu của tôi là tạo một chương trình lấy số điện thoại và xuất nó ở định dạng chuẩn. Nó sẽ bỏ qua mọi ký tự không phải số, sẽ xuất ra nếu không có đủ chữ số và cũng sẽ bỏ qua mọi số sau mười chữ số đầu tiên. Raptor của tôi đang hoạt động tốt nhưng thật khó để dịch nó sang C++.
Tôi đang sử dụng Microsoft Visual Studio. Vấn đề là nó không chạy. Nếu tôi nhập nhiều hơn một số, tôi sẽ gặp lỗi.
Tôi gặp một số khó khăn khi chạy mã này. Bất kỳ trợ giúp và lời khuyên sẽ được đánh giá rất cao.
#include
#include
using namespace std;
định dạng void(char outArray[], chuỗi inNumber)
{
outArray[0] = '(';
outArray[4] = ')';
outArray[5] = ' ';
outArray[9] = '-';
outArray[1] = inNumber[0];
outArray[2] = inNumber[1];
outArray[3] = inNumber[2];
outArray[6] = inNumber[3];
outArray[7] = inNumber[4];
outArray[8] = inNumber[5];
outArray[10] = inNumber[6];
outArray[11] = inNumber[7];
outArray[12] = inNumber[8];
outArray[13] = inNumber[9];
}
int main()
{
điện thoại chuỗi, inNumber;
cout << "Xin vui lòng nhập số điện thoại: ";
cin >> điện thoại;
chỉ số int = 0;
int num = 0;
char outArray[14];
for (chỉ mục; điện thoại[chỉ mục] >= '0' && điện thoại[chỉ mục] <= '9'; chỉ mục++)
{
inNumber[num] = điện thoại[chỉ mục];
số++;
}
nếu (inNumber.size() > 10)
{
định dạng (outArray, inNumber);
cout << "Số được định dạng đúng là: ";
cout << outArray;
}
khác {
cout << "Đầu vào phải chứa ít nhất 10 chữ số."
}
system("pause");
return 0;
}
câu trả lời hay nhất
Một số lưu ý:
sử dụng std::chuỗi
thay thế ký tự
mảng.
Trừ khi bạn không chắc chắn về cách gõ (điện thoại
), nếu không bạn không cần sử dụng vòng lặp for để kiểm tra điều lệ. Tuy nhiên, nếu đúng như vậy, hãy sử dụng std::getline()
Nhận đầu vào và sử dụng dựa trên phạm vi for
vòng lặp Thực hiện phân tích sau.
Bạn có thể sử dụng std::isdigit
检查 ký tự
diễn viên là một con số
Mục tiêu của tôi là tạo một chương trình nhập số điện thoại và xuất ra ở định dạng chuẩn. Nó bỏ qua mọi ký tự không phải số, sẽ xuất ra nếu không có đủ chữ số và cũng sẽ bỏ qua bất kỳ chữ số nào sau mười chữ số đầu tiên.
Điều này có nghĩa là độ dài tối thiểu của một số phải là 10
. Sau đónếu như
Tuyên bố nên được nếu (inNumber.size() >= 10)
Cần thiết trong chức năng định dạng()
trong cuộc gọi giới thiệu vì bạn muốn thay đổi outArray
nội dung. Mà còn,trong số
có thểconst
ref, vì chúng tôi không thay đổi chuỗi này.
Mã cập nhật:( Xem mã mẫu trực tuyến )
#include
#include
#include // std::isdigit, std::size_t
void format(std::string& outArray, const std::string& inNumber) /* không ngoại trừ */
{
for (std::size_t chỉ mục = 0; chỉ mục < 10; ++ chỉ mục)
{
if (index == 0) outArray += '(';
khác nếu (index == 3) outArray += ") ";
khác nếu (chỉ mục == 6) outArray += '-';
outArray += inNumber[chỉ mục];
}
}
int main()
{
std::string điện thoại;
std::cout << "Xin vui lòng nhập số điện thoại: ";
std::getline(std::cin, phone);
std::string inNumber;
cho (chữ char : điện thoại)
if (std::isdigit(static_cast(letter))) // kiểm tra chữ cái == chữ số
inNumber += chữ cái;
nếu (inNumber.size() >= 10)
{
std::string outArray;
định dạng (outArray, inNumber);
std::cout << "Số được định dạng đúng là: ";
std::cout << outArray;
}
khác {
std::cout << "Đầu vào phải chứa ít nhất 10 chữ số."
}
return 0;
}
Về câu hỏi về c++ - chuỗi và mảng, 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/50055188/
Tôi là một lập trình viên xuất sắc, rất giỏi!