如何将字符串中的值分隔为数组

How to separate values in string into Array(s)

本文关键字:分隔 数组 字符串      更新时间:2023-10-16

我想把一个具有不同数据类型的字符串放入单独的数组中,假设我有以下字符串(在每行中,每个"字段"都用空格"分隔(:

string s = "1 2 3 Hello_world
3 4 1 Hi_world   
1 5 3 Bye_world"

我想把这个字符串放入4个单独的数组中,每个数组都是每列中的值,所以当显示时会显示这样的内容:

s[0] = 1, 3, 1
s[1] = 2, 4, 5  
s[2] = 3, 1, 3  
s[3] = Hello_world, Hi_world, Bye_world

如何初始化和实现这些数组?其他语言有一个叫做split的函数(C#、PHP等(,那么C++呢?

此外,我只能使用数组,而不能使用向量。请别人给我建议。非常感谢。

既然你有一个字符串,让我们把它变成一个流:

std::istringstream input_stream(s);

模式似乎是字符串的每一行都将是目标数组的下一个元素。

int a[3];
int b[3];
int c[3];
std::string d[3];
int i;
int index = 0;
input_stream >> i;
a[index] = i;
input_stream >> i;
b[index] = i;
input_stream >> i;
c[index] = i;
std::string t;
input_stream >> t;
d[index] = t;

上面的片段用于一次迭代。

OP的任务是将片段转换为循环,以处理字符串的每一行。

您需要的是一个Tokenizer例程,它可以使用特定的分隔符将字符串拆分为子字符串(一种情况下为"\n",另一种情况为"(。然后,您可以将生成的子字符串保存到一个或多个向量中(std::vectorvectorOfStrings;(

看看这里的答案:

如何在C++中标记字符串?