【问题标题】:How to convert string to an int array using stoi() && substr()如何使用 stoi() && substr() 将字符串转换为 int 数组
【发布时间】:2022-07-05 23:46:50
【问题描述】:

我正在尝试将字符串转换为整数并将这些数字保存到数组中,我尝试过这样

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main() {
    int number[5];
    string input;
    //numbers
    cout << "type sonme numbers"<<endl;
    cin >> input;
    for(int i = 0 ; i<= 4; i++){
        number[i] = stoi(input.substr(i,i),0,10);
        cout << number[i];
    }
    return 0;
}

当我运行它时会出现这个错误:

在抛出 'std::invalid_argument' 的实例后调用终止 什么():stoi

【问题讨论】:

  • 输入是什么?
  • 字符串上的range for loop。确保字符is a digit。如果是,则从数字字符中减去字符'0',得到它的整数值。
  • 您是想将一个字符串转换为一个整数,还是一个整数列表?似乎您可能希望每个单独的数字都是它自己的整数(例如,输入 12345 会给出一个包含 1、2、3、4、5 的数组)?那是你要的吗?或者您是否正在寻找由一些标点符号分隔的多位整数列表?

标签: c++


【解决方案1】:

您的第一个循环要求从索引0 开始,长度为0 的子字符串,因此您将一个空字符串传递给stoi。即使您实际上提供了有效的输入(至少十位数字的字符串,因此您可以在其上调用 .substr(5, 5) 并获得有用的结果),第一个循环总是尝试解析空字符串并终止。不要那样做。

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2016-08-14
    相关资源
    最近更新 更多