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”.
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
.
$ sudo cmake --install build/
[sudo]:
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libscn.a
-- Up-to-date: /usr/local/include
-- Installing: /usr/local/include/scn
-- Installing: /usr/local/include/scn/xchar.h
-- Installing: /usr/local/include/scn/regex.h
-- Installing: /usr/local/include/scn/chrono.h
-- Installing: /usr/local/include/scn/istream.h
-- Installing: /usr/local/include/scn/fwd.h
-- Installing: /usr/local/include/scn/ranges.h
-- Installing: /usr/local/include/scn/scan.h
-- Installing: /usr/local/lib/cmake/scn/scn-targets.cmake
-- Installing: /usr/local/lib/cmake/scn/scn-targets-release.cmake
-- Installing: /usr/local/lib/cmake/scn/scn-config.cmake
-- Installing: /usr/local/lib/cmake/scn/scn-config-version.cmake
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/.