Utilize esse scanf Moderno para C++

🚀 É mais rápida que `iostream` e tipada, ao contrário de `scanf`.


Utilize esse scanf Moderno para C++


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.

Caminho da instação dos arquivos
$ 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

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/.


cppdaily cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!