SHA256
92 lines
1.9 KiB
Markdown
92 lines
1.9 KiB
Markdown
# BetterSTL cin/cout 支持
|
|
|
|
现在三个核心类都支持标准输入输出:
|
|
|
|
## BigInteger - 高精度整数
|
|
|
|
```cpp
|
|
#include <bstl/big_integer.hpp>
|
|
#include <iostream>
|
|
|
|
bstl::BigInteger bi;
|
|
std::cout << "Enter a large integer: ";
|
|
std::cin >> bi;
|
|
std::cout << "You entered: " << bi << std::endl;
|
|
```
|
|
|
|
支持任意精度的整数输入输出,不受 `long long` 限制。
|
|
|
|
## BigDecimal - 高精度浮点数
|
|
|
|
```cpp
|
|
#include <bstl/big_decimal.hpp>
|
|
#include <iostream>
|
|
|
|
bstl::BigDecimal bd;
|
|
std::cout << "Enter a decimal number: ";
|
|
std::cin >> bd;
|
|
std::cout << "You entered: " << bd << std::endl;
|
|
```
|
|
|
|
支持任意精度的浮点数输入输出,精度不丢失。
|
|
|
|
## String - 增强字符串
|
|
|
|
```cpp
|
|
#include <bstl/string.hpp>
|
|
#include <iostream>
|
|
|
|
bstl::String str;
|
|
std::cout << "Enter a word: ";
|
|
std::cin >> str;
|
|
std::cout << "You entered: " << str << std::endl;
|
|
|
|
// 可以使用 Python 风格的方法
|
|
std::cout << "Uppercase: " << str.upper() << std::endl;
|
|
std::cout << "Split: ";
|
|
auto parts = str.split("_");
|
|
```
|
|
|
|
## 使用示例
|
|
|
|
编译和运行演示程序:
|
|
|
|
```bash
|
|
cd /home/archzero/C++/BetterSTL
|
|
cmake -S . -B out/build -G Ninja
|
|
cmake --build out/build
|
|
|
|
# 运行库测试
|
|
ctest --test-dir out/build
|
|
|
|
# 运行演示(需要在终端交互)
|
|
./out/build/IOTests
|
|
```
|
|
|
|
## 实现细节
|
|
|
|
### operator<<(输出)
|
|
- BigInteger: 通过 `toString()` 输出
|
|
- BigDecimal: 通过 `toString()` 输出
|
|
- String: 通过 `str()` 输出
|
|
|
|
### operator>>(输入)
|
|
- BigInteger: 读取字符串,创建新对象
|
|
- BigDecimal: 读取字符串,创建新对象
|
|
- String: 读取字符串,创建新对象
|
|
|
|
所有运算符都定义在 `bstl` 命名空间中。
|
|
|
|
## 编译链接
|
|
|
|
在编译你的程序时:
|
|
|
|
```bash
|
|
g++ your_program.cpp -I/path/to/include -L/path/to/lib -lBetterSTL -o your_program
|
|
```
|
|
|
|
或者使用静态库:
|
|
```bash
|
|
g++ your_program.cpp -I/path/to/include /path/to/libBetterSTL.a -o your_program
|
|
```
|