Форум программистов, компьютерный форум CyberForum.ru

Функция getline(). Как исключить знаки препинания (символы)? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Регулярные выражения в с++ http://www.cyberforum.ru/cpp-beginners/thread645330.html
Рылся рылся, нигде не нашел... Кто нибудь, объясните: 1) как установить эту библиотеку Regex. 2) Как заставить её работать. 3) И простой пример кода Пользуюсь visual 2010 там есть библиотека regex. Но использовать её никак не получается... Вообщем помогите)
C++ Нужно сделать алгоритм, решающий задачу за время н Всем привет! Есть задача: Исходные данные В первой строке записано целое число N — количество бильярдных шаров (1 ≤ N ≤ 100000). В следующих N строках даны номера этих шаров в том порядке, в котором ревизор забирал их из лузы. Результат Выведите слово «Cheater», если закатывающий не мог закатить все N шаров в правильном порядке. Иначе выведите «Not a proof». Реализовывал несколько... http://www.cyberforum.ru/cpp-beginners/thread645327.html
C++ Работа с текстовыми файлами в С++
Здравствуйте. На лето задали написать прогу в среде visual studio c++, но этот предмет у меня закончился зимой и я конечно уже забыл значительную часть этого языка. Поиск в интернете ничего более менее полезного пока не дал и я хотел попросить помочь вас с парочкой вопросов. Само задание: "В программе создать текстовый файл и записать в него строки, вводимые с клавиатуры до тех пор, пока не...
C++ исправление ошибок
//funkcijas1 #include <iostream> using namespace std; int main() { int i, fact=1, n; cout <<"Введите целое число в диапазоне от 1 до 12!" << endl; cin>>n; for (i=1; i<=n; i++)
C++ Поток с GetMessage http://www.cyberforum.ru/cpp-beginners/thread645264.html
Привет всем. У меня в программе в отдельном потоке имеется такой код: while(GetMessage(&msg,0,0,0) { TranslateMessage(&msg); DispatchMessage(&msg); } Из основной программы я запускаю этот поток и программа останавливается на нём, хотя она должна продолжить выполняться дальше. В чем моя ошибка?
C++ Значение переменных Для Х, принимающего значения от XN до XK с шагом ∆X, определить Y. При условии: Значения всех переменных определить по таблице 1. Результат выдать в форме таблицы значений X иY. Для таблицы обеспечить подпись столбцов. N 0 1 2 3 4 5 6 7 8 9 A √9-x Ln 6x (x-4)^2 Log5x √x e^x-8.6 Log3x e^2x+0.2 Log2x √x+2 B Log4x 5x Tg1/2x Sin3x Log2x Sin x x-32 Log7x 12 Log3x C -10 ... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.09.2012, 16:45     Функция getline(). Как исключить знаки препинания (символы)?
Ещё раз, как в файле записи выглядят ? И как считанное должно выглядеть? Не совсем понял.

Добавлено через 23 минуты
Например, такая конструкция будет считывать из файла отдельные слова и сохранять считанное слово в другом массиве без знаков пунктуации:
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cctype> // для ispunct()
using namespace std;
 
int main()
{
  fstream f("1.txt");
  do
  {     
        char buff[30] = "\0"; // массив для считывания слова из файла 
        char rezult[30] = "\0"; // здесь будет слово уже без знаков пунктуации
        f >> buff; // чтение до пробельного символа 
        if (!f) break; // если конец файла
        // перебор символов в buff
        for (int i = 0; i < strlen(buff); i++)
        {
            if (!ispunct((unsigned char)(buff[i]))) rezult[i] = buff[i]; // если символ не знак пунктуации, то в rezult
            cout << rezult[i];
        }
        cout <<endl; // здесь можно использовать считанное и обработанное слово из файла. 
        
  } while (true);
 
  system("pause");
  return 0;
}

Если посимвольно читать, то можно так:
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cctype> // для isalnum()
using namespace std;
 
int main()
{
 fstream f("1.txt");
  
 while (!f.eof()) // чтение до конца файла
 {   
        char buff;      
        int i = 0;
        char rezult[30] = "\0"; // здесь будет слово уже без знаков пунктуации
        
        while (f.get(buff) && (buff != ' ' && buff != '\n')) // посимвольное чтение из файла до пробела или символа новой строки
        {
            if (isalnum((unsigned char)(buff))) // если символ буква или цифра, то в rezult
            {
                rezult[i] = buff;
                cout << rezult[i];
                i++;
            }
        }
        cout << endl; // здесь можно использовать считанное и обработанное слово из файла. 
 } 
 
  system("pause");
  return 0;
}
 
Текущее время: 23:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru