当要求用户输入时,C++程序不工作

C++ program not working when asked for user input

本文关键字:C++ 程序 工作 用户 输入      更新时间:2023-10-16

以下代码将字符串转换为整数数组,并输出数组的和。如果我在程序中定义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] != ''; 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);