Удаление символов из файла .csv, который должен содержать только цифры

0

В настоящее время у меня есть CSV файл, который должен содержать только числовые значения, однако в некоторых столбцах есть ошибки, которые означают, что текст включен. Мне интересно, как лучше всего будет удалять эти персонажи.

Я рассматриваю использование str.erase(std::remove(str.begin(), str.end(), 'xxxxxxx'), str.end()); , Для этого мне нужно будет прочитать мои данные в строке, а затем удалить алфавит из этой строки. В настоящее время я делаю это так (я использую "?" Как разделитель, потому что знаю, что в моем файле нет ни одного).

#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

string Weather_test;
char chars[] = {'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z'};

int main()
{
    ifstream Weather_test_input;
    Weather_test_input.open("/Users/MyName/Desktop/Weather_test.csv");

    getline(Weather_test_input, Weather_test, '?');

    str.erase(remove(Weather_test.begin(), Weather_test.end(), chars[!eof]), Weather_test.end();

    cout << Weather_test;

    return 0;
}

Проблема в том, что я не знаю, что делать вокруг части chars [! Eof]. Какие-либо предложения?

Заранее спасибо!

  • 0
    что eof ? Это не определено в моей среде. Кстати, ваша программа не компилируется, потому что str не определен. Вы Weather_test.erase виду Weather_test.erase вместо str.erase
  • 0
    Я имел в виду Weather_test.erase вместо str.erase
Теги:
string
csv
character
editing

2 ответа

2

Я бы предложил использовать std::remove_if вместо std::isalpha. Возможно, что-то вроде

Weather_test.erase(
    remove_if(Weather_test.begin(), Weather_test.end(), std::isalpha),
    Weather_test.end());
  • 0
    Хорошо. Кажется, это имеет смысл. Я только что искал с помощью remove_if. Знаете ли вы, какую библиотеку мне нужно включить, чтобы заставить работать remove_if? В настоящее время я получаю сообщение об ошибке «Нет подходящей функции для вызова remove_if».
  • 0
    @ user1432792 Это в стандартном заголовке <algorithm> . И вы включаете правильный заголовок для std::isalpha (перейдите по ссылке ссылки, чтобы увидеть, какой)? Можете ли вы предоставить полную ошибку? Это может содержать другие подсказки.
Показать ещё 1 комментарий
0

Мне удалось это сделать. Это было окончательное решение, которое сработало!

#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

string Weather_test;

int main()
{
    ifstream Weather_test_input;
    Weather_test_input.open("/Users/MyName/Desktop/Weather_test.csv");

    getline(Weather_test_input, Weather_test, '?');

    Weather_test.erase(remove_if(Weather_test.begin(), Weather_test.end(), ::isalpha), Weather_test.end());

    cout << Weather_test;

    return 0;
}

Большое спасибо Иоахим Пилеборг !!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню