关于std::setw(),std::setfill(),std::setbase(),std::hex用法示例代码:
int main()
{
stringstream ss;
string str = "hello world";
ss << std::setw(20) << setfill('0') << str;
cout << std::setw(20) << setfill('0') << str <<endl;
//在后边设置宽度不好使
cout << str << setfill('0') << std::setw(20) <<endl;
string text;
ss >> text;
cout << text << endl;
int data = 100;
cout << std::setw(20) << setfill('a') << std::setbase(16) << data <<endl;
cout << std::setw(20) << setfill('a') << std::hex << data <<endl;
}
return 0;
输出为:
说明:stringstream字符流,<<可以将字符输入进字符流,>> 可以将字符输出到string对象中,也可以通过stringstream::str()函数将字符串传给string对象,二者区别是,>>符号遇到空格就会结束字符串的传递不完整,但是stringstream::str()函数可以获得完整的字符串。
- setw(8)在输出之前输出8个空格一般是两个tab键,一个tab键默认四个空格,所以用在后边测试不好用,一般使用就例如是段落开头,都是用在文本之前的。
- setfill(‘0’)以字符0填充
- setbase(8)将数字按照8进制输出,std::hex就是以16进制输出,hex就是16进制的关键字,很明显。
附加测试stringstream代码
int main()
{
cout << "this is a test stringstream..." << endl;
double a = 3.1415926;
int b = 10;
float c = 1.00;
string text;
stringstream ss,ss1;
ss << "fashengshenm eshile?"<<a<<"tingting";
ss<<b<<"nengmaisha";
ss<<a;
cout << "===================" << endl;
text = ss.str();
cout << text << endl;
ss << "c++ test";
text = ss.str();
cout << text << endl;
string text2;
ss >> text2; //通过>>的方式输入进string对象遇到空格就会结束,通过.str方式输入进字符串的话会进行完整赋值
cout << text2 << endl;
ss1<<a;
ss1>>text2;
cout << text2 << endl;
return 0;
}
自己测试输出结果,结果就是测试
stringstream.str()
以及>>
操作符的区别…