【发布时间】:2021-06-16 10:34:11
【问题描述】:
我正在尝试使用特定数字“11”来拆分数字。例如,“1110110011”是一个字符串,我想创建一个这样的字符串数组,“11,1011,0011”。谁能帮我?我正在为这个函数使用 C++。
#include <vector>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<string> splitStrings(string str, char dl){
string word = "";
// to count the number of split strings
int num = 0;
// adding delimiter character at the end
// of 'str'
str = str + dl;
// length of 'str'
int l = str.size();
// traversing 'str' from left to right
word = "";
vector<string> substr_list;
for (int i = 0; i < l; i++) {
// if str[i] is not equal to the delimiter
// character then accumulate it to 'word'
if (str[i] == dl && str[i + 1] == dl) {
//cout << str[i] << str[i+1] << endl;
word += str[i];
//substr_list.push_back(word);
word += str[i + 1];
//substr_list.push_back(word);
str[i] = 0;
str[i + 1] = 0;
if (word != "1" || word != "0" ) {
substr_list.push_back(word);
}
word = "";
}
else {
word += str[i];
}
}
// return the splitted strings
return substr_list;
}
int main(){
string str1 = "1110110011";
char dl = '1';
int numberofsplitstring = 3;
vector<string> result = splitStrings(str1, dl);
for (int i = 0; i < numberofsplitstring; i++) {
cout << result[i]; //without space
}
}
有一个缺陷我不知道如何修复。我的目的是确保当我打印结果时,它仍然出现“1110110011”。但是,当我在 Visual Studios 2019 中实现它时,它输出为“11 1011 0011”。因此,当我添加 endl 行时,它的输出是这样的,
【问题讨论】:
-
你使用的是字符数组还是整数数组?
-
目前,我使用的是向量字符串。
标签: c++ arrays string split numbers