gpt4 book ai didi

c++ - 输入以空格分隔的数字

转载 作者:行者123 更新时间:2023-11-28 02:15:32 32 4
gpt4 key购买 nike

我正在尝试为在线编码平台上的一个问题编写代码。我已经编写了代码,但无法获得所需格式的输入。我需要输入一个包含三个整数(比如 n1、n2 和 m)的输入。问题说输入可以是由空格分隔的数字。我尝试寻求帮助,甚至找到了一种方法,但它不起作用。

这是我的代码:

#include <string>
#include <ctype.h>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;

int main()
{
int t;
cout << "Enter the number of test cases" << endl;
cin >> t;
do
{
string rawInput;
int isNum, n1, n2, m, t, i, j;
int arr[3];
arr[0] = 0;
arr[1] = 0;
arr[2] = 0;
cout << "Enter a number, or numbers separated by a space, between 1 and 1000." << endl;
while (getline(cin, rawInput))
{
cout << "Rawinput" << rawInput.length();
for (i = 0; i < rawInput.length(); ++i)
{
cout << rawInput[i];
}
int j = 0, k = 0;
for (int j; j < rawInput.length(); ++j)
{
isNum = isdigit(rawInput[j]);
if (isNum)
{
arr[k] = arr[k] * 10 + atoi(rawInput[j]);
}
else
k = k++;
}
cout << "I am Array" << endl;
for (int l = 0; l < 3; l++)
cout << arr[l] << endl;
}
if (arr[0] >= arr[2] && arr[1] >= arr[2])
{
for (int i = 1; i <= arr[2]; i++)
{
if (arr[0] >= i && arr[1] >= i)
{
arr[0] = arr[0] - i;
arr[1] = arr[1] - i;
}
}
}
cout << arr[1] + arr[0];
t--;
} while (t > 0);
}

特别是函数 atoi 似乎不起作用。我尝试使用 stoi,但即使那样也不起作用。

最佳答案

如果您只是想收集一系列由空格分隔的整数作为用户输入..ie 1 2 3 4 5,您不必使用 getline 方法。

您可以针对如下条件重做 while 循环:

int input;

while (cin >> input)
{
<<HANDLE INPUT>>
}

这极大地减少了您尝试执行的行解析,并且只要有一个要接受,就会捕获该行上的下一个输入整数。对于上面的同一系列,循环迭代将像这样......

Loop #      Input Taken
1 1
2 2
3 3
... ...

这种方式不需要解析,因为它将在每次迭代中处理一个整数输入。

关于c++ - 输入以空格分隔的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142064/

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