摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 需要注意
文字排版 ★☆☆☆☆ 答案正确 100 2014/12/18 23:13:00

题意

文字按照每行80字符重排。

题解

  • getline读入一整行然后用sstream分词,详见之前的文(右上角分别搜索getline和sstring)。
  • 另一种方法似乎更加简洁,这么写就好,具体代码懒得写了,string库详见之前的文(右上角搜索string库):
显示/移除行号
  1. s.substr(0,s.rfind(" ",80));

详细的这儿就不赘述了。顺手帮同学写的,居然调快半个小时,原因是把sstream的输出当成自动空格的了,我一定是蠢了。

代码

sd3.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<iostream>
  4. #include<sstream>
  5. using namespace std;
  6. string s,line,a;
  7. stringstream ste;
  8. int main()
  9. {
  10. int n;
  11. cin>>n;
  12. getline(cin,s,'\n');
  13. while(getline(cin,s,'\n'))
  14. {
  15. if(s.size()==0)
  16. break;
  17. line="";
  18. ste<<s;
  19. while(ste>>a)
  20. {
  21. if(line=="")
  22. line=a;
  23. else if(line.size()+a.size()<80)
  24. line+=" "+a;
  25. else
  26. {
  27. cout<<line<<endl;
  28. line=a;
  29. }
  30. }
  31. cout<<line<<endl;
  32. line="";
  33. }
  34. return 0;
  35. }

著作权声明[编辑]

关于[编辑]