scnlib
é uma biblioteca C++ moderna para substituir scanf
e std::istream
. Esta biblioteca tenta nos aproximar ainda mais da substituição completa de iostream
e stdio
em C.
É mais rápida que iostream
e tipada, ao contrário de scanf
. Pense em {fmt} ou em std::format
em C++20, mas em outra direção.
Esta biblioteca é a implementação de referência da proposta de padrões ISO C++ P1729 "Análise de Texto".
Instalação
Para compilar basta clonar com git e usar o CMake e instalar:
git clone https://github.com/eliaskosunen/scnlib
cd scnlib
cmake -B build .
cmake --build build
sudo cmake --install build
Após isso, já pode sair do repositório e removê-lo:
cd .. && rm -rf scnlib
.
Exemplo básico
Nesse exemplo, além da scnlib
também há o uso o println
do C++23, vamos ler 2 números via prompt e automaticamente será exibida a soma deles:
main.cpp
#include <scn/scan.h>
#include <print>
constexpr auto sum = [](int x, int y){
return x + y;
};
int main(){
if(auto result =
scn::prompt<int, int>("Informe 2 números para somar? ", "{} {}")) {
auto [a, b] = result->values();
std::println("A soma de {} mais {} é: {}", a, b, sum(a, b));
}else{
std::println(stderr, "Error: {}", result.error().msg());
}
}
Para compilar use a flag: -lscn
:
g++ main.cpp -lscn
E então, rode o binário e teste, exemplo:
./a.out
Informe 2 números para somar? 3 6
A soma de 3 mais 6 é: 9
Para mais informações acesse o repositório oficial e o endereço: https://scnlib.dev/.
Top comments (0)