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