如何在 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 >> (istream&, int&)
?
sstream
不是有问题的,stringstream
是每个人都应该使用的标题吗?自从我记得“使用 2 中的较长者”以来,已经有一段时间(几年)了。
OP 是一个“新手”,所以我认为我的 MCVE 这样更自然、更易读。
这段代码在tokens.push_back(stoi(buf));
线上失败
[Error] 'stoi' was not declared in this scope
以上是关于如何在 C++ 中将数字字符串拆分为数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将数字字符串转换为 int 数组 [重复]