如何将字符串中的值分成数组
Posted
技术标签:
【中文标题】如何将字符串中的值分成数组【英文标题】:How to separate values in string into Array(s) 【发布时间】:2018-07-31 15:52:50 【问题描述】:我想将不同数据类型的字符串放入单独的数组中,假设我有以下字符串(在每一行中,每个“字段”用空格“”分隔):
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++ 呢?
另外,我只能使用数组,不能使用向量。请有人指教。谢谢!
【问题讨论】:
***.com/questions/236129/… C++ 有std::istringstream
创建一个由std::stringstream
s 组成的数组,每个数组包含一行。试着找出其余的。
【参考方案1】:
既然你有一个字符串,让我们把它变成一个流:
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 的一个任务是将片段转换成循环来处理字符串的每一行。
【讨论】:
我尝试了您的方法并尝试将其置于循环中...但它无法编译并给出以下错误:无法转换'std::string aka std::basic_string您需要的是一个 Tokenizer 例程,它可以将您的字符串拆分为带有特定分隔符的子字符串(在一种情况下为“\n”,在另一种情况下为“”)。然后您可以将生成的子字符串保存到一个或多个向量中 (std::vector vectorOfStrings;)
在这里查看答案:
How do I tokenize a string in C++?
【讨论】:
您好,感谢您的回复。但是,除了vector还有其他方法吗?因为我试图在不使用矢量的情况下做到这一点。 你也可以使用一个普通的旧数组:std::string arrOfStrings[3];
以上是关于如何将字符串中的值分成数组的主要内容,如果未能解决你的问题,请参考以下文章