Как идентифицировать каждую разделенную часть в C++? (Если пользователь вводит строку "***3aaa*1h**2kk", то мне нужно идентифицировать эти части на основе звезд и сохранить их в виде строки.)
Здесь пользователь вводит строку типа"***3aaa*1h**2kk". Мой код просто разбил эту строку на три разные части, и мне нужно реализовать этот код в качестве идентификатора каждой части означает, что если есть 3 звезды, то она называется как 3 и сохраняет эти части как строку; если есть 2 звезды, то она называется как 2 и сохраняет эти части как строку; если есть только 1 звезда, то она называется как 1.
Часть / Значение
3 / 3ааа
1 | 1ч
2 / 2кк
#include <iostream> #include <string> #include<vector> using namespace std; void split(string inputString); int main() { string inputString = ""; bool flag = true; while (flag) { cout << "Please Enter the String: \n"; getline(cin, inputString); if (inputString == "no") { flag = false; } else { split(inputString); } } return 0; } void split(string inputString) { string splitString = inputString; vector<string> wordVector; std::size_t prev = 0, pos; while ((pos = splitString.find_first_of("*", prev)) != std::string::npos) { if (pos > prev) { wordVector.push_back(splitString.substr(prev, pos - prev)); } prev = pos + 1; } if (prev < splitString.length()) { wordVector.push_back(splitString.substr(prev, std::string::npos)); } for (int i = 0; i < wordVector.size(); i++) { cout << wordVector[i]<<endl; } }
Что я уже пробовал:
Здесь я отделил исходную строку, но я не знаю, как я могу идентифицировать эти части на основе звезд? пожалуйста, помогите мне решить эту проблему. Это будет высоко оценено.
Richard MacCutchan
Когда вы сталкиваетесь со звездой, вам нужно подсчитать, сколько их осталось до следующего нормального символа.