字符串输入输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串输入输出相关的知识,希望对你有一定的参考价值。

由于C++输入输出涉及到缓冲区,有可能在比赛中出现问题,个人还是感觉C的输入输出容易一点。但是C++中定义的string真的很方便,所以建议以后用C读入,用C++处理,用C++的函数转化也很方便。

输入:采用 scanf() 和 gets() /*gets() 在头文件<string>中定义*/  getchar()/*当需要以非空格、回车为分隔符时使用*/

           既然不用cin/cout 的话,cin.get() 和 cin.getline() 以及 getline() 就都不用了。

输出:printf()

 

示例:

char s1[100] ; //可用一个字符数组多次读入,没有问题

scanf("%s",s1); //用scanf读入的时候,以空格作为终止 

printf("%s\n",s1); //当上一句读到空格时,立刻输出,下面测试本来想用 “1234 5678”作为输入,结果发现其实没法输入“5678”就已经弹出输出了。

————————

input:

1234

output:

1234

————————

char s2[100];

gets(s2);//用gets读入时,以回车为终止

printf("%s\n",s2);

————————

input:

1234 5678

output:

1234 5678

————————

 

转换:

char[] ->string : string s(s1);

                         s1=st;//char st="1234";string s1;

string ->char[] :c_str() //注意c_str()返回的是一个const *char 类型的临时指针,且不可更改,所以输出时有两种选择,建议直接printf("%s",s.c_str());

         也可以: const *char s1=s.c_str(); printf("%s",s1);

         //copy() 也可以实现,不过感觉没必要

示例:

#include<string>

char st[100];

string s1;

  //输入

s1=st;

string s2(st);

   //对s处理 reverse(s.begin(),s.end()); //头文件<algorithm>

printf("%s",s.c_str()); //直接输出

 

——————————

备注:

string中的“ = ”就以代表开辟内存空间,不代表地址赋值。不用考虑指针的问题。

示例:

string s1,s2;char st[]="1234";
s1=st;s2=st;
printf("%s\n",s1.c_str());
printf("%s\n",s2.c_str());
reverse(s1.begin(),s1.end());
printf("%s\n",s1.c_str());
printf("%s\n",s2.c_str());

————————

output:

1234

1234

4321

1234

以上是关于字符串输入输出的主要内容,如果未能解决你的问题,请参考以下文章

Go-输入输出总结及oj的输入输出

java输入输出的问题,输出中文字符串出现乱码

c语言如何实现字符的批量输入和批量输出?

刷OJ时输入输出与字符串

Shell篇之八 输入输出重定向

事先允许最多五个英文字符串输入后,再指定输出顺序的编号(即对应输入字符串的顺序),使对应输出的英文字符