合约输出
合约部署运行在eos节点上,合约的调用是由客户端发起的,合约的调用请求将触发eos节点上部署的合约运行且产生输出,合约的输出作为该请求的应答并返回给合约调用客户端。
在hello world合约程序中,我们在客户端调用了合约,合约调用请求在eos节点执行且打印输出作为请求的应答返回给合约调用客户端。
eos标准库C打印函数:
1. 指定字符串及长度
void prints_l( const char* cstr, uint32_t len);
2. 指定字符串
void prints( const char* cstr );
3. 打印整数
void printi( int64_t value );
void printui( uint64_t value );
4. 打印16字节整数
void printi128( const int128_t* value );
void printui128( const uint128_t* value );
5. 打印整数描述的base32编码字符串
void printn( uint64_t name );
6. 单精度浮点数
void printsf(float value);
7. 双精度浮点数
void printdf(double value);
8. 四精度浮点数
void printqf(const long double* value);
eos标准库C++打印函数是对C打印函数的封装,API如下:
void print( const char* ptr );
void print( int num );
void print( int32_t num );
void print( int64_t num );
void print( unsigned int num );
void print( uint32_t num );
void print( uint64_t num );
void print( int128_t num );
void print( uint128_t num );
void print( float num );
void print( double num );
void print( long double num );
void print( name name );
void print( bool val );
void print_f( const char* s );
如果自定义的数据类型实现了print方法,也可以直接调用print函数进行对象的打印输出。
变长参数的打印函数:
void print(......);
例如:
const char *s = "Hello World!";
uint64_t unsigned_64_bit_int = 1e+18;
uint128_t unsigned_128_bit_int (87654323456);
uint64_t string_as_unsigned_64_bit = N(abcde);
print(s , unsigned_64_bit_int, unsigned_128_bit_int, string_as_unsigned_64_bit);
// Ouput: Hello World!100000000000000000087654323456abcde
C++风格的打印方法:
eos也模拟实现了一个简单的iostream从而实现C++风格的打印输出。
const char *s = "Hello World!";
uint64_t unsigned_64_bit_int = 1e+18;
uint128_t unsigned_128_bit_int (87654323456);
uint64_t string_as_unsigned_64_bit = N(abcde);
eosio::cout << s << " " << unsigned_64_bit_int << " " << unsigned_128_bit_int << " " << string_as_unsigned_64_bit;
// Output: Hello World! 1000000000000000000 87654323456 abcde