例如,我想将此字符串的元素存储在数组[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]";
我要存储没有空格和分号的数字。
答案 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