> value1; -6ren">
gpt4 book ai didi

c++ - 如何将输入的数字字符串转换为 int 数组?

转载 作者:行者123 更新时间:2023-11-30 03:17:28 28 4
gpt4 key购买 nike

我的编程任务是使用数组对长度最多为 20 位的大整数执行加法和减法运算。指令告诉我们从数组末尾开始存储数字时执行算术运算。例如:

string value1 = "";
cin >> value1; //input 1234
test[19] = 4;
test[18] = 3;
test[17] = 2;
test[16] = 1;

因此执行和与差运算会更容易。任何未使用的数字都应初始化为 0。

我首先编写了一个 for 循环,以将 test[] 数组的最后一个索引读取到第一个索引。变量 numDigits 跟踪数组中的所有非零值。

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

int main()
{
string value1 = "";
int numDigits = 0;
const int Max_Digits = 20;
int test[Max_Digits] = {0};
test[19] = 10;
//cin >> value1;

for (int i = Max_Digits - 1; i >= 0; i--)
{
if (test[i] != 0)
numDigits++;
}
cout << "There are " << numDigits << " nonzero values."; //numDigits == 1
/*cout << "Your number is: " << test[];*/
return 0;
}

因此,如果用户在字符串变量 value1 中输入“1234”,我希望程序在继续赋值之前将字符串转换为数字数组并输出为 1234(无逗号或空格)。

最佳答案

我不确定您是需要向后插入还是向前插入,所以下面的演示同时进行了这两种操作。选择您的选择。

这个想法很简单。对于向后插入,您需要创建一个迭代器 i,它被初始化为 Max_Digits-1 并随着迭代器遍历字符串递增而递减。对于正向插入,您需要使用 std::string::length() 获取字符串的长度,并使用 Max_Digits-(strLen-i) 赋值。 std::string::length() 函数每次被调用时都会重新计算字符串的长度。它不需要支付该费用,因此不妨将其存储在变量中。

#include <iostream>
#include <string>

int main()
{
std::string value1 = "";

std::cout<< "Enter a number up to 20 ints long >> ";
std::cin >> value1;
std::cout<<std::endl<< "Entered string: " << value1 <<std::endl;

constexpr int Max_Digits = 20;

int backwards[Max_Digits] = {0};
int bck_itr = Max_Digits-1;
for(int i=0; value1[i]!='\0'; ++i, --bck_itr)
backwards[bck_itr] = value1[i] - '0';

std::cout<< "Backwards ints: ";
for (int i=0; i<Max_Digits; ++i)
std::cout<< backwards[i] <<",";
std::cout<<std::endl;

int forward[Max_Digits] = {0};
int strLen = value1.length();
for(int i=0; value1[i]!='\0'; ++i)
forward[Max_Digits-(strLen-i)] = value1[i] - '0';

std::cout<< "Forward ints: ";
for (int i=0; i<Max_Digits; ++i)
std::cout<< forward[i] <<",";
std::cout<<std::endl;
}

对于输入:

12345678

结果是:

Enter a number up to 20 ints long >> 
Entered string: 12345678
Backwards ints: 0,0,0,0,0,0,0,0,0,0,0,0,8,7,6,5,4,3,2,1,
Forward ints: 0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,

例子:https://rextester.com/MDTL51590

附言。如果您不知道 constexpr 是什么,那么在这种情况下,只需将其视为增强的 const

关于c++ - 如何将输入的数字字符串转换为 int 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483621/

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