随笔

谨慎的在c++中使用cin进行交互

在使用c++ 进行控制台交互时 也许你也容易忽略掉的细节

– 飞扬轻狂 20081024 fallseir[at]gmail.com

http://blog.fallseir.com/2008/10/note_std_cinnote_std_cin/

注意1: ” cin >> value ” 没有正确的读取换行
注意2: 不匹配的类型 将导致输入流错误 而在其后的调用中自动返回
注意3: 空字符 在使用 >> 赋值给变量时将自动过滤 直到读入非空字符为止

出错的代码 !!

$ vim 02-05-BasicIO-err.cpp
---------------------------------------------
#include 
using namespace std;
int main( int argc, char *argv[] ){
  int num;
  string str,line;

  cout << "Please enter a number:" ;
  cin >> num;
  cout << "Please enter a text :" ;
  cin >> str;
  cout << "Please enter some words :" ;
  getline( cin, line );

  cout << endl;
  cout << "number : " << num << endl;
  cout << "text : " << str << endl;
  cout << "some words : " << line << endl;

  return 0;
}
---------------------------------------------
$ g++ 02-05-BasicIO-err.cpp
$ a.out # 貌似正确的输入
----------------
Please enter a number:12
Please enter a text :message
Please enter some words :
number : 12
text : message
some words :
----------------
/*
 分析原因:
 第二次输入 "message" 的时候 自动过滤前次的 并得到了正确的值
 getline 的时候 因为输入流中还有一个  没有被读取 所以没有等待用户输入,直接返回了
 */
--------------------
$ a.out # 貌似正确的结果
----------------
Please enter a number:13 message some words in the line 
Please enter a text :P lease enter some words :
number : 13
text : message
some words :  some words in the line
----------------
/*
 分析原因:
 cin >> str 的时候 从流中读取了 "message"
 getline 的时候 读取了流中剩下的内容
 */
--------------------
$ a.out # 错误的开始
----------------
Please enter a number:a
Please enter a text :P lease enter some words :
number : 6696948
text :
some words :
----------------
/*
 分析原因:
 cin >> num 的时候 从流中读取了不匹配的数据 "a" ,cin 进入异常状态
 cin >> str 和 getline 的时候 因为流异常 所以没有进行读取
 */
--------------------

优化的严谨的代码

$ vim 02-05-BasicIO.cpp
---------------------------------------------
#include 
using namespace std;
int main( int argc, char *argv[] ){
  int num;
  string str,line;
  string tmp;

  cout << "Please enter a number:" ;
  cin >> num;
  while(cin.fail()){ // 如果出现错误
    cin.clear(); // 清除错误
    getline(cin,tmp); // 清除缓存
    cerr << "Error input!!,Please try again" << endl;
    cin >> num;
  }
  getline(cin,tmp); // 使用getline清除缓存,因为 >> 操作符不会对末尾的  进行读取 

  cout << "Please enter a text :" ;
  cin >> str;
  getline(cin,tmp);

  cout << "Please enter some words :" ;
  getline( cin, line );
  cout << endl;
  cout << "number : " << num << endl;
  cout << "text : " << str << endl;
  cout << "some words : " << line << endl;

  return 0;
}

---------------------------------------------
----------------
$ a.out
----------------
Please enter a number:123 message test words!
Please enter a text :word and message
Please enter some words :some words in the line!

number : 123
text : word
some words : some words in the line!
----------------

--

http://blog.fallseir.com/2008/10/note_std_cinnote_std_cin/

飞扬轻狂
fallseir[at]gmail.com
blog.fallseir.com
2008年10月24日
转载请注明


通过.htaccess 配置cgi环境

1、配置 .htaccess
————————————
AddHandler cgi-script .cgi .pl #添加handler
Options +ExecCGI # 允许目录执行cgi
————————————
2、更改目录权限为apche apache可以执行目录下的文件
3、测试 test.cgi
——————–
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print “Hello, World.”;


升级到了wp2.5

升级到了wp2.5
原来升级很简单 呵呵
1、覆盖原始文件
2、运行 http://example.com/wordpress/wp-admin/upgrade.php
一切ok!
当然如果你要升级 最好先备份数据库和原始文件

主要应该是后台更新了 界面更清爽了 其他的因为我不常用 所以没有留意什么是新的 哈
增加了TAG

underone 的 G7 v5 不错 赞!


code:在php中捕获错误和异常

class Error_handler{
function Error_handler(){
$this->_init();
}
function _init(){
/**
* Sets error handler to be Prado::phpErrorHandler
*/
set_error_handler(array($this,’handler_error’),error_reporting());
/**
* Sets exception handler to be Prado::exceptionHandler
*/
set_exception_handler(array($this,’handler_exception’));
}
function handler_error($errno,$errstr,$errfile,$errline){
printf(“%s,%s,%s,%s\n”,$errno,$errstr,$errfile,$errline);
}
function handler_exception($exception){
print_r($exception);
}
}
$h=new Error_handler();
$a=3/0;
throw new Exception();
?>


test:测试feedsky的wp插件

测试feedsky的wp插件
—————
去除一直使用的ping url

http://www.feedsky.com/api/RPC2

使用feedsky的wp插件进行 更新和rss转向测试
插件下载地址:Feedsky Feed 插件 1.1

摘录波波以前的文章

Feedsky Feed 插件介绍

Feedsky是一家Feed管理服务商,提供给Blogger(博客)、网站(Website)和商业出版者等内容出版者在线的服务平台,帮助他们加强Feed的优化和传播管理。 Feedsky会处理用户的Feed格式,使用户的Feed能够自动适应各种RSS格式以及各种阅读器,同时还会帮助用户建立一个面向读者的订阅引导页面,并且统计每天、每周和每月的读者数量和使用的阅读器种类及文章点击数。

该插件是Feedsky为Wordpress用户专门提供的功能性辅助插件,用以快速直接的使用Feedsky的相关服务。插件需要你提供你在Feedsky上的Feed名称,请先进行 Feedsky Feed 绑定。目前该插件包括两个功能:

* Ping 服务 (默认启用)
* Feed 转向 (默认启用)

Feedsky Ping 功能

Ping Feedsky 是Feedsky针对Feed内容更新提供的一个强大功能。启用这个插件后,当您更新了Blog,便会自动向Feedsky发送通知,Feedsky的爬虫会立即对内容进行抓取,以保证您的Feed得到最快速度的更新。

Feedsky Feed 转向功能

Feedsky Feed转向功能,可以将对您Blog中所有RSS Feed的请求和流量,完全转至您在Feedsky生成的Feed地址,您无需通知已有的大量订阅用户进行任何更改,便可以享受到更专业的Feed统计和管理服务了。


Copyright © 1996-2010 飞扬轻狂's blog. All rights reserved.
iDream theme by Templates Next | Powered by WordPress