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

时间:2018-07-31 15:52:50

标签: c++ arrays initialization

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

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 ++呢?

此外,我只能使用数组,不能使用向量。请有人指教。谢谢!

2 个答案:

答案 0 :(得分:0)

既然您有一个字符串,就让它成为一个流:

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的任务是将片段转换为循环以处理字符串的每一行。

答案 1 :(得分:0)

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

在这里查看答案:

How do I tokenize a string in C++?