Здравствуйте, нужна помощь с написанием быстрого считывания из файла с помощью getchar_unlock(). В файле есть две строки не обязательно одинакового размера, сколько символов в каждой строке тоже не известно, нужно считать их в 2 массива или вектора, заранее спасибо за помощь.
Проблема: код считывает только 1 число, не знаю как сделать для всей строки
#include <iostream>
using namespace std;
bool read_int_unlocked(int & out)
{
int c = getchar_unlocked();
int x = 0;
int neg = 0;
for (; !('0'<=c && c<='9') && c != '-'; c = getchar_unlocked())
{
if (c == EOF)
return false;
}
if (c == '-')
{
neg = 1;
c = getchar_unlocked();
}
if (c == EOF)
return false;
for (; '0' <= c && c <= '9' ; c = getchar_unlocked())
{
x = x*10 + c - '0';
}
out = neg ? -x : x;
return true;
}
int main() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int number;
while(read_int_unlocked(number))
std::cout << number << " ";
return 0;
}
#include <iostream>
#include <vector>
int read_int_unlocked(int & out)
{
int c = getchar_unlocked();
int x = 0;
int neg = 0;
for (; !('0'<=c && c<='9') && c != '-'; c = getchar_unlocked())
{
if (c == EOF)
return 0;
}
if (c == '-')
{
neg = 1;
c = getchar_unlocked();
}
if (c == EOF)
return 0;
for (; '0' <= c && c <= '9' ; c = getchar_unlocked())
{
x = x*10 + c - '0';
}
out = neg ? -x : x;
if(c == '\n') return 2;
return 1;
}
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
std::vector<int> v1;
std::vector<int> v2;
int number;
int oldVec = 1;
bool cycle = true;
while(cycle){
int res = read_int_unlocked(number);
if(res == 0) cycle = false;
if(res == 1) {
if(oldVec) v1.push_back(number);
else v2.push_back(number);
}
if(res == 2) {
if(oldVec) v1.push_back(number);
else v2.push_back(number);
oldVec = false;
}
}
for(int i = 0; i < v1.size(); i++) std::cout << v1[i] << " ";
std::cout << std::endl;
for(int i = 0; i < v2.size(); i++) std::cout << v2[i] << " ";
std::cout << std::endl;
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Привет!Хочу понять как сделать лекссер на C++Анализировал лексеры на Питон
Доброе время сутокТребуется изменять значения каждого Label`a через N время, каким образом можно организовать систему обращения к данным полям...