Вывести все знаки раздела и их указатели в введенной строке
Не выводит то, что нужно, в общем не знаю как писать(
#include <iostream>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
string str;
cin >> str;
cout << "Символы: ";
for (int i = 0; i < str.length(); i++) {
while (str[i]){
if (ispunct(str[i])){
cout << "str[" << i << "] = " << str[i] << endl;
}
i++;
}
}
}
Ответы (1 шт):
Автор решения: nyekitka
→ Ссылка
А что вы считаете знаками раздела? ispunct() проверяет только знаки пунктуации. Если вы хотите проверять ещё и пробелы и табуляции, то используйте isspace(). Плюс, если в вашей строке есть пробелы, то обычный cin не пойдёт. Нужно использовать getline(). А ещё не понятно, зачем вы заводите цикл while как только встретили нужный символ внутри for и этим циклом уже проходите всю оставшуюся строку, хотя всё это можно сделать с помощью for:
#include <iostream>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
string symbs = ".,;:!?";
string str;
getline(cin, str);
cout << "Символы: ";
for (int i = 0; i < str.length(); i++) {
if (symbs.find(str[i]) != -1)
cout << "str[" << i << "] = " << str[i] << '\n';
}
return 0;
}