如何修改数组,从中删除空格并将其存储在新数组中?

时间:2019-05-09 23:31:34

标签: c++ arrays string

例如,我想将此字符串的元素存储在数组[1 2 3; 4 5 6; 7 8 9]中。

    string s = "[1 2 3;4 5 6;7 8 9]";
    string news[100];
    int leng1 = s.length();
    for (int i = 0; i < leng1; i++)
    {
        int v = test.find(";");
        if (v == -1)
        {
            limo[i] = s.substr(0, leng1);
            break;
        }

        limo[i] = s.substr(0, v);
        test = test.substr(v + 1, v + leng1);
    }
    string s = "[1 2 3;4 5 6;7 8 9]";

我要存储没有空格和分号的数字。

1 个答案:

答案 0 :(得分:1)

如果您的目标是将这些数字存储在int数组中,则有多种方法可以完成此操作而不必编写for循环,调用substr等。

为此,一种方法是先用空格替换不需要的字符。一旦完成,就可以使用C ++中提供的功能,当给定字符串作为输入时,该功能可以解析和存储项目。

以下使用std::replace_if替换字符并使用std::istringstream解析字符串。

#include <string>
#include <sstream>
#include <vector>
#include <iostream>
#include <algorithm>

int main()
{
    std::string s="[1 2 3;4 5 6;7 8 9]";
    // store items here
    std::vector<int> news;

    // replace unwanted characters with a space
    std::replace_if(s.begin(), s.end(), [](char ch){return ch == ']' || ch == '[' || ch == ';';}, ' ');

    // parse space delimited string into the vector
    std::istringstream strm(s);
    int data;
    while (strm >> data)
       news.push_back(data);

    // output results
    for (auto& v : news)
      std::cout << v << "\n";
}

输出:

1
2
3
4
5
6
7
8
9

Live Example