В настоящее время у меня есть файл .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]. Какие-либо предложения?
Заранее спасибо!
Я бы предложил вам использовать std::remove_if
вместо этого вместе с std::isalpha
. Может быть что-то вроде
Weather_test.erase(
remove_if(Weather_test.begin(), Weather_test.end(), std::isalpha),
Weather_test.end());
Мне удалось это сделать. Это было окончательное решение, которое сработало!
#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;
}
Огромное спасибо Иоахиму Пилеборгу !!!