koala написав:1. Не існує "середовища C++". Як використовувати символи - то ваші особисті проблеми в C++. До речі, розкрийте таємницю - як "використати множину символів для видалення зайвих символів з тексту"? Звучить як "використати кольори олівців для витирання літер".
2. Можна. Звісно, два порівняння на більше-менше швидші, ніж три десятки порівнянь на "дорівнює"; втім, можна так написати порівняння, що буде довше.
3. Все ж таки, яка множина?
І що можна зрозуміти з цього коду? Тут вводиться рядок і призводиться до нижнього регістру. А що видаляти треба - не зрозуміло.
1. За "середовище" вибачаюсь, я мав на увазі середовище Visual Studio 2010. Щодо множини, я мав на увазі множину символів ('/', '.', ',', '?', '!' і т.д.), яка буде використовуватись, як перевірочна для видалення таких символів з тексту.
2. Тобто порівняння по коду ASCII використовувати доцільніше?
3. Див. відп. 1.
Хоч код і не був звязаний з темою, я кидав його, як приклад того, що я хоч щось робив
Ось код, який вже в мене є:
▼Прихований текст
#include <iostream>
#include <string>
using namespace std;
int main()
{
string stringText;
string symbols = ",:.;!?\/|";
cout << "Input text" << endl;
getline(cin, stringText);
const int n = 5;
string masuv[n];
// Приведення до нижнього регістру
for (int i = 0; i < stringText.length(); i++)
stringText[i] = tolower(stringText[i]);
// Видалення зайвих символів
for (int i = 0; i < stringText.length(); i++)
for (int j = 0; j < symbols.length(); j++)
if (stringText[i] == symbols[j])
{
stringText = stringText.erase(i, 1);
i--;
}
// Видалення зайвих пропусків
for (int i = 0; i < stringText.length(); i++)
if (stringText[i] == ' ')
{
int j;
j = i + 1;
while (stringText[j] == ' ')
stringText.erase(j, 1);
}
cout << stringText << endl;
cout << endl;
system("pause");
return 0;
}
Мені треба оптимізувати видалення зайвих символів, для великого тексту, та передбачити видалення всіх можливих синтаксичних символів.