1 = 0 0 97 218
2 = 588 0 97 218
3 = 196 438 97 218
4 = 0 657 97 218
5 = 294 438 97 218
У меня есть txt-файл, как указано выше. Как я могу читать только целые числа из этого файла без =?Как читать целые числа из txt-файла, пропуская =?
1 = 0 0 97 218
2 = 588 0 97 218
3 = 196 438 97 218
4 = 0 657 97 218
5 = 294 438 97 218
У меня есть txt-файл, как указано выше. Как я могу читать только целые числа из этого файла без =?Как читать целые числа из txt-файла, пропуская =?
Вот базовая структура: читайте строки за строкой и разбор.
for (std::string line; std::getline(std::cin, line);)
{
std::istringstream iss(line);
int n;
char c;
if (!(iss >> n >> c) || c != '=')
{
// parsing error, skipping line
continue;
}
for (int i; iss >> i;)
{
std::cout << n << " = " << i << std::endl; // or whatever;
}
}
Чтобы прочитать файл через std::cin
, конвейер в вашу программу, как ./myprog < thefile.txt
.
Он не приложил никаких усилий. Может также переименовать сайт для writemycodeforme.com –
Другая возможность будет фаска, которая классифицирует =
как белое пространство:
class my_ctype : public std::ctype<char>
{
mask my_table[table_size];
public:
my_ctype(size_t refs = 0)
: std::ctype<char>(&my_table[0], false, refs)
{
std::copy_n(classic_table(), table_size, my_table);
my_table['='] = (mask)space;
}
};
Затем пропитать ваш поток с локали, включая эту фаской, а затем читать цифры, как если =
там не было вообще:
int main() {
std::istringstream input(
"1 = 0 0 97 218\n"
"2 = 588 0 97 218\n"
"3 = 196 438 97 218\n"
"4 = 0 657 97 218\n"
"5 = 294 438 97 218\n"
);
std::locale x(std::locale::classic(), new my_ctype);
input.imbue(x);
std::vector<int> numbers((std::istream_iterator<int>(input)),
std::istream_iterator<int>());
std::cout << "the numbers add up to: "
<< std::accumulate(numbers.begin(), numbers.end(), 0)
<< "\n";
return 0;
}
Конечно, это, вероятно, не очень разумно сложить все числа, так как первый один на каждой линии, кажется, номер строки - это просто быстрый де mo, чтобы показать, что мы действительно читаем цифры без лишних «вещей», вызывающих какие-либо проблемы.
+1 Это легко лучшее решение когда-либо :-) –
То немного низких технологий :( –
@NominSim я создаю петлю с ifstream, но когда он прочитал = возникает проблема, но я не могу понять – droidmachine
@droidmachine:.. Покажите код – ildjarn