C++ |从printf() 到sprintf() 再到sstream 以及类型转换

1 printf()格式化输入输出在屏幕上格式化(数据类型、对齐格式等)输出字符串int printf(const char *format [, argume

各位老铁们好,相信很多人对C++ |从printf() 到sprintf() 再到sstream 以及类型转换都不是特别的了解,因此呢,今天就来为大家分享下关于C++ |从printf() 到sprintf() 再到sstream 以及类型转换以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

printf(‘%s%e%s’,'{温度,’,123.4567890,’}’);//{温度,1.234568e+002}

2 sprintf()格式化输入输出

将格式化数据写入字符串。

int sprintf(char *buffer, const char *format, [参数] … );

buffer:char指针,指向要写入的字符串的缓冲区。

格式:格式字符串。

[argument].可选参数,可以是任何类型的数据。

C++ |从printf() 到sprintf() 再到sstream 以及类型转换

返回写入缓冲区的字符数,如果出错则返回-1。如果buffer 或format 是空指针并且继续运行且没有错误,则该函数返回-1 并且errno 设置为EINVAL。

例子:

#include stdio.hint main( void ){char buffer[200], s[]=’computer’, c=’l’;int i=35, j;float fp=1.7320534f;//格式化并打印每种到bufferj=sprintf( buffer, ‘ String: %s\n’, s );j +=sprintf( buffer + j, ‘ Character: %c\n’, c );j +=sprintf( buffer + j, ‘ Integer: %d\n’, i ); j +=sprintf( buffer + j, ‘ Real: %f\n’, fp ); printf( ‘Output:\n%s\n字符数=%d\n’, buffer, j );getchar();return 0;}/*Output: String: 计算机Character: l Integer: 35 Real: 1.732053字符数=79*/假设你想要使用sprintf() 函数将变量从int 类型转换为string 类型。为了正确完成此任务,您必须确保目标缓冲区足够大以容纳转换后的字符串。此外,必须使用正确的格式字符。如果使用不正确的格式,可能会发生不可预测的后果。

3 iostream和fstream

4 sstream格式化输入输出

C++标准库中的sstream提供了一些比ANSI C的stdio.h更高级的功能,即简单性、类型安全性和可扩展性。

sstream库定义了三个类:istingstream、ostringstream和stringstream,分别用于进行流的输入、输出和输入输出操作。另外,每个类都有相应的宽字符集版本。

C++ |从printf() 到sprintf() 再到sstream 以及类型转换

sstream 使用字符串对象而不是字符数组。这避免了缓冲区溢出的危险。而且,传入参数和目标对象的类型是自动推导的,因此即使使用不正确的格式化程序也不会有危险。

#include iostream#include stringusing namespace std;#include sstreamint main(){ostringstream oss; //用于写入stringoss'{Temperature,’scientific123.4567890 ‘}’; 的输出内存//设置各种类型的数据到输出流osscoutoss .str()endl; //输出流数据输出字符串src=’If you are a boy!’; istringstream iss(src); //将数据设置为输入流字符串dst; while(issdst) //输入流input { coutdstendl; } 系统(‘暂停’);返回0; }/*{温度,1.234568e+002}Ifyouareaboy!*/

5 利用sstream进行类型转换

5.1字符串转int:

#include iostream#include sstreamusing namespace std;void main(){string result=’10000′;int n=0;stringstream stream;streamresult; //将数据放入字节流streamstreamn;//将流中的字节stream输出到变量cout++nendl; system(‘pause’);}5.2 其他类型转换为字符串的泛化:

#include iostream#include stringusing namespace std;#include sstreamtemplateclass Tvoid to_string(string result,const T t){ostringstream oss;//创建流osst;//将值传输到流result=oss.str();//获取转换后的字符,写入result}int main(){string str;to_string(str,10.5);//double转stringcoutstrendl;to_string(str,123);//int转stringcoutstrendl;to_string(str,true );//bool 转stringcoutstrendl;system(‘pause’);return 0;}5.3 类型转换:

#include iostream#include string#include std exceptusing namespace std;#include sstreamtemplatetypename Target=string, typename Source=stringTarget to(Source arg) //将Source 转换为Target{stringstream Interpreter;Target result;interpreter arg; //将arg 写入流解释器结果中; //从流中读取结果return result;}int main(){string s=tostring,double(1.2);coutsendl;double d=todouble,string(‘1.2’);coutd*2endl;system(‘pause’ );返回0; }/*1.22.4/*5.4 在进行多次转换时,必须调用stringstream的成员函数clear()

用户评论

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
君临臣

之前都是用 printf/scanf 打印和输入数据,效率有点慢啊。这篇博文介绍了 sprintf 和 sstream 的用法,感觉比 printf 直接写字符串输出方便多了!学习总结真牛。

    有8位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
为爱放弃

我一直在用 C++ 里各种转换方法来处理类型,这篇文章里提到了 sprintf 这种方案,还真是个好办法!可以把多种数据直接拼接成一个字符串,简洁明了。以后要用这种方式试试.

    有9位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
抚涟i

讲道理 printf 格式的输出效率是最高的,如果要快速高效地打印数值,还是 printf 更合适。其他的格式化方法感觉有些过度复杂了,不一定适合所有场景.

    有10位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
青山暮雪

C++ 学习之路漫长啊!本来以为 sprintf 够用了,结果发现还有 sstream,能直接在内存里面处理字符串操作,这真是太方便了!

    有20位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
顶个蘑菇闯天下i

作为一名前端开发工程师来说,对于 printf 和 sprintf 的使用比较熟悉。这篇博文提到的 sstream 方法,感觉蛮新奇的,将来说不定可以用上.

    有15位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
弃我者亡

学习这些输出方式,确实感觉比用 raw printf 更灵活,特别是 sprintf 和 sstream 都支持各种格式化操作,可以根据需要自定义字符串的样式。这篇文章写的太详细了!

    有7位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
日久见人心

我个人觉得 C++ 的类型转换部分还是比较复杂的,总有一种要记过很多规则的感觉。不过这篇博文讲的这些输出方法确实能帮助我更好的理解类型转换的应用场景.

    有17位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
七级床震

printf 格式有点啰嗦,sprintf 感觉稍微更方便,但 sstream 比这两个都要简单易用,直接在字符串流里操作真是太棒了!这个博客真给我带来了新发现!

    有12位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
早不爱了

文章里提到的 sprintf 和 sstream 的用法我觉得很不错,可以提高代码的简洁性和可读性。不过对于 printf 的使用,建议加上一些使用场景的介绍,更完善文章内容.

    有5位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
玻璃渣子

感觉这些输出方式都各有优缺点,printf 速度快,但操作复杂;sprintf 更灵活,但需要手动拼接字符串;sstream 简单易用,但效率可能略逊一筹。希望博主能够后续更新一篇比较不同输出方式性能的详细对比文章!

    有16位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
哭花了素颜

作为一名C++新手,这篇文章对 printf, sprintf 和 sstream 的介绍非常 helpful!学习了这些方法之后,我的代码编写效率明显提升了,谢谢作者分享!

    有5位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
此刻不是了i

我用过 sprintf 和 sstream,但 printf 比较少用。这篇博文让我明白了 printf 在某些场景下的优势,比如需要快速打印数值情况。这篇文章的分析很到位!

    有11位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
何年何念

写程序的时候,确实很经常用到输出数据的功能。以前没想过printf 有这么多用法,看了这篇博文之后,感觉自己对C++ 更加熟悉了!

    有16位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
面瘫脸

作者写的非常清楚易懂,把 printf, sprintf 和 sstream 的区别和应用场景都解释得很到位。我已经在代码中开始尝试使用这些方法了!

    有6位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
断秋风

我之前用过 sprintf 和 sstream ,但对 printf 的用法一直不太了解,这篇文章让我豁然开朗了!原来 printf 可以在很多情况下发挥作用。

    有5位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
爱情的过失

"C++|从printf()到sprintf()到sstream及类型转换" 这篇博文写的太棒了,终于解开了我长期困扰的 C++输出类型转换问题。文章讲解清晰易懂,案例丰富实用,强烈推荐给同样在学习 C++ 的小伙伴们!

    有11位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
夏至离别

刚开始学C++的时候,对 printf, sprintf 和 sstream 都不大了解,看了这篇博文之后感觉一下子打开了编程的新世界!原来输出数据的方式可以如此多样和灵活!现在我已经开始尝试这些方法来编写更加高效的代码了。

    有19位网友表示赞同!

C++ |从printf() 到sprintf() 再到sstream 以及类型转换
陌颜幽梦

很感谢作者分享这么好的学习资源!我从这篇博文中不仅学习到了 printf, sprintf 和 sstream 的用法,还了解了一些 C++ 类型转换的相关知识。这篇文章真是满满干货啊!

    有11位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/118880.html

(0)
小su's avatar小su
上一篇 2024年9月1日 上午11:19
下一篇 2024年9月1日 上午11:22

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注