gpt4 book ai didi

c++ - 字符串和数组的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:31 26 4
gpt4 key购买 nike

我的目标是制作一个输入电话号码并以标准格式输出的程序。它会跳过任何非数字字符,如果没有足够的数字将输出,并且还会跳过前十位数字之后的任何数字。我的猛禽工作顺利,但很难将其翻译成 C++。

我正在使用 Microsoft Visual Studio。问题是它没有运行。如果我输入的数字多于一个数字,我会收到失败错误。

我在运行这段代码时遇到了一些困难。我们将不胜感激任何帮助和建议。

#include <iostream>
#include <string>
using namespace std;

void format(char outArray[], string 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()
{
string phone, inNumber;
cout << "Please enter a phone number: ";
cin >> phone;
int index = 0;
int num = 0;
char outArray[14];

for (index; phone[index] >= '0' && phone[index] <= '9'; index++)
{
inNumber[num] = phone[index];
num++;
}

if (inNumber.size() > 10)
{
format(outArray, inNumber);

cout << "The properly formatted number is: ";
cout << outArray;
}
else {
cout << "Input must contain at least 10 digits." << endl;
}

system("pause");
return 0;
}

最佳答案

一些注意事项:

  • 使用 std::string 代替 char 数组。

  • 除非您不确定输入 (phone),否则您不需要使用 for 循环检查包机。但是,如果是这种情况,请使用 std::getline() 获取输入并使用 range-based for loop 进行如下解析.

  • 您可以使用 std::isdigit检查 character 是一个数字。

    My goal is to make a program that inputs a phone number and outputs itin a standard format. It skips over any non-number characters, willoutput if there are not enough digits, and will also skip over anydigits after the first ten digits.

  • 这意味着数字的最小长度应为 10。然后if 语句应该是 if (inNumber.size() >= 10)

  • 需要在函数 format() 中通过 ref 调用传递,因为您要更改 outArray 的内容。此外,inNumber 可以是const ref,因为我们不更改此字符串。

更新代码:( See a sample code online )

#include <iostream>
#include <string>
#include <cstddef> // std::isdigit, std::size_t

void format(std::string& outArray, const std::string& inNumber) /* noexcept */
{
for (std::size_t index = 0; index < 10; ++index)
{
if (index == 0) outArray += '(';
else if (index == 3) outArray += ") ";
else if (index == 6) outArray += '-';
outArray += inNumber[index];
}
}

int main()
{
std::string phone;
std::cout << "Please enter a phone number: ";
std::getline(std::cin, phone);

std::string inNumber;

for (char letter : phone)
if (std::isdigit(static_cast<unsigned char>(letter))) // check the letter == digits
inNumber += letter;


if (inNumber.size() >= 10)
{
std::string outArray;
format(outArray, inNumber);
std::cout << "The properly formatted number is: ";
std::cout << outArray;
}
else {
std::cout << "Input must contain at least 10 digits." << std::endl;
}
return 0;
}

关于c++ - 字符串和数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50055188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com