如何在 C++ 中将数字字符串拆分为数组? [复制]

Posted

技术标签:

【中文标题】如何在 C++ 中将数字字符串拆分为数组? [复制]【英文标题】:How can I split string of numbers to array in C++? [duplicate] 【发布时间】:2019-06-06 14:55:34 【问题描述】:

我有string s = "4 99 34 56 28";

我需要将此字符串拆分为数组:[4, 99, 34, 56, 28]

我是用java做的:

String line = reader.readLine();
String[] digits = line.split(" ");

但是我如何在 C++ 中做到这一点?没有外部库。

【问题讨论】:

“但是我如何在 C++ 中做到这一点?没有外部库。”显然使用循环。 @Slava 我是 C++ 新手。你能分享一些例子吗? 【参考方案1】:

Split the string by spaces,对于每个标记(在您的情况下为数字),将字符串转换为 int,如下所示:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <string> // stoi

using namespace std;

int main(void)

    string s("4 99 34 56 28");
    string buf;      
    stringstream ss(s); 

    vector<int> tokens;

    while (ss >> buf)
        tokens.push_back(stoi(buf));

    for(unsigned int i = 0; i < tokens.size(); ++i)
      cout << tokens[i] << endl;

    return 0;

输出:

4
99
34
56
28

【讨论】:

为什么是stoi 而不是直接operator &gt;&gt; (istream&amp;, int&amp;) sstream 不是有问题的,stringstream 是每个人都应该使用的标题吗?自从我记得“使用 2 中的较长者”以来,已经有一段时间(几年)了。 OP 是一个“新手”,所以我认为我的 MCVE 这样更自然、更易读。 这段代码在tokens.push_back(stoi(buf));线上失败 [Error] 'stoi' was not declared in this scope

以上是关于如何在 C++ 中将数字字符串拆分为数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将数字列表拆分为电话号码? [复制]

如何在 C++ 中将数字字符串转换为 int 数组 [重复]

如何在javascript中将大数组拆分为小数组? [复制]

如何在JavaScript中将数组数组拆分为单个数字?

在 C++ 中将数字转换为字符串的最佳方法? [复制]

如何在 C++ 中将空格分隔的字符串拆分为多个字符串?