电商网站介绍,wordpress 网站静态页面,上海今天新闻综合频道,甘肃营销型网站制作/*收获#xff1a;1. 我觉得最大的收获是#xff0c;了解了该怎么进行竖向的数据输出并且#xff0c;以及《入门经典》的做法#xff0c;并没有先转换为二维数组再输出#xff0c;而是用了些别的技巧(好像也能算是技巧#xff0c;具体的看代码吧#xff0c;这个我也不太… /*收获1. 我觉得最大的收获是了解了该怎么进行竖向的数据输出并且以及《入门经典》的做法并没有先转换为二维数组再输出而是用了些别的技巧(好像也能算是技巧具体的看代码吧这个我也不太好描述)2. string的size()函数的返回类型之前一直以为是int型后来看到《入门经典》里面有对size返回值的强制类型转换于是去查了一下发现自己以前错得有些离谱啊~引用博客的总结那么size()这个函数返回的类型到底是什么呢一定要记住绝对不是整形而是size_type类型的所以千万不要把size的返回值赋给一个int变量有关这个知识点的blog;http://blog.csdn.net/sanshixia/article/details/12259527此外在C Primer 中文版的第四版有说明如下任何存储string的size操作结果的变量必须为 string::size_type类型特别重要的是不要把size的返回值赋给一个int变量另外上面的blog里面还有这样一段话:string::size_type从本质上来说是一个整型数。关键是由于机器的环境它的长度有可能不同。 例如我们在使用 string::find的函数的时候它返回的类型就是 string::size_type类型。而当find找不到所要找的字符的时候它返回的是 npos的值这个值是与size_type相关的。假如你是用 string s; int rc s.find(.....); 然后判断if ( rc string::npos ) 这样在不同的机器平台上表现就不一样了。如果你的平台的string::size_type的长度正好和int相匹配那么这个判断会侥幸正确。但换成另外的平台有可能 string::size_type的类型是64位长度的那么判断就完全不正确了。 所以正确的应该是 string::size_type rc s.find(.....); 这个时候使用 if ( rc string::npos )就会正确了。概括一下段意就是size的返回值会和所用机器有关所以有时的正确只是侥幸正确所以如果要将size_type类型的数据和另一个已知类型的数据进行比较要么强制转换 size_type为特定类型要么将已知类型转换为 string::size_type 类型3. 传引用 与 传const类引用最初将 void print(const string s, int len, char ch) 误写为了void print(string s, int len, char ch)结果程序报错了后来找到了两个解释https://stackoverflow.com/questions/14492158/invalid-initialization-of-non-const-reference-of-type-stdstringhttp://blog.csdn.net/zhenwo123/article/details/8031155*/ #include iostream
#include string
#include algorithm
using namespace std;const int maxcol 60;
const int maxn 105;string filenames[maxn];// 输出字符串s长度不足 len 时补字符 ch
void print(const string s, int len, char ch)
{cout s;for (int i 0; i len - s.size(); i)cout ch;
} int main()
{int n;while (cin n){int M 0; //M为长度最长文件名的长度 for (int i 0; i n; i){cin filenames[i];M max(M, (int)filenames[i].size()); //注意string的size函数的返回值一定要加上强制类型转换 }//计算列数cols和行数rowsint cols (maxcol - M) / (M 2) 1, rows (n - 1) / cols 1;print(, 60, -);cout endl;sort(filenames, filenames n); //排序for (int r 0; r rows; r){for (int c 0; c cols; c){int idx c * rows r;if (idx n) print(filenames[idx], c cols - 1 ? M : M 2, );}cout endl;} }return 0;
} 转载于:https://www.cnblogs.com/mofushaohua/p/7789440.html