当要求用户输入时,C++程序不工作
C++ program not working when asked for user input
以下代码将字符串转换为整数数组,并输出数组的和。如果我在程序中定义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);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 如何在c++程序中找到函数的地址