gpt4 book ai didi

c++ - 当要求用户输入时,C++程序不起作用

转载 作者:行者123 更新时间:2023-12-01 15:03:47 27 4
gpt4 key购买 nike

以下代码将字符串转换为整数数组,并输出该数组的和。如果我在程序中定义str(str =“1 2 3 4 5”),它会起作用,但是如果用户输入str,则不会。我似乎无法弄清楚为什么会发生这种情况,并且希望得到一些反馈!

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

// Fucntion to convert a string to
// integer array
void convertStrtoArr(string str)
{
// get length of string str
int str_length = str.length();

// create an array with size as string
// length and initialize with 0
int arr[str_length] = { 0 };

int j = 0, i, sum = 0;

// Traverse the string
for (i = 0; str[i] != '\0'; i++) {

// if str[i] is ', ' then split
if (str[i] == ' ') {

// Increment j to point to next
// array location
j++;
}
else {

// subtract str[i] by 48 to convert it to int
// Generate number by multiplying 10 and adding
// (int)(str[i])
arr[j] = arr[j] * 10 + (str[i] - 48);
}
}

cout << "arr[] = ";
for (i = 0; i <= j; i++) {
cout << arr[i] << " ";
sum += arr[i]; // sum of array
}

// print sum of array
cout << "\nSum of array is = " << sum << endl;
}

// Driver code
int main()
{

string str;
cin >> str;


convertStrtoArr(str);

return 0;
}

最佳答案

在流上使用>>一次读取一个单词。因此,您的字符串大小将始终保持为1,并且不会获得正确的结果,因此,如果您想读取整个字符串,请使用以下方法。

cin.getline(str, sizeof str);

或者您也可以通过玩耍来使用此方法。
getline(cin, str);

关于c++ - 当要求用户输入时,C++程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833134/

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