在使用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 > num;
cout > str;
cout

, , ,

一段用于替换字符串中指定的key的代码
–[[User:Fallseir|飞扬轻狂]] 2008年5月6日 (二) 02:32 (PDT)
$str=mapKeys($formatstr,$maps);
$str=“replace this template string !the key maps is herekey1=>{key1},key{{2=>{key{2},key3}=>{key3{}}”;echo mapKeys($str  ,array(“key1″=>“value 1″  ,“key{2″=>“value 2″  ,“key3}”=>“value 3″  ));echo “\n”
output>>
replace this template string !the key maps is here
key1=>value 1,key{2=>value 2,key3}=>value 3
abc[the abc value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the %value% 2],%%[the %value% 2],%$$%%{,%,
abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,
$ php -r ‘highlight_file(”test.php”);’

<?php/** test */$str=“replace this template string !the key maps is herekey1=>{key1},key{{2=>{key{2},key3}=>{key3{}}”;echo mapKeys($str  ,array(“key1″=>“value 1″  ,“key{2″=>“value 2″  ,“key3}”=>“value 3″  ));echo “\n”;
$str=“abc{key}{}}%{%{}%%%}%{{%{0{}%%,%%%,{key},%%,%%{key,2},%%{key,2},%$$%%{,%,”;echo mapKeys($str,array(“key”=>“[the abc value]“,“key,2″=>“[the %value% 2]“));echo “\n”;
$str=“abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,”;echo mapKeys($str,array(“key”=>“[the abc value]“    ,“key,2″=>“[the %value% 2]“),“|%|”);echo “\n”;//end test*//*$ php test.phpoutput>>replace this template string !the key maps is herekey1=>value 1,key{2=>value 2,key3}=>value 3abc[the abc value]}}%[%}%%%]%{%[0}%%,%%%,{key],%%,%%[the %value% 2],%%[the %value% 2],%$$%%{,%,abc%%%%%%%%%,%%%,%key%,%%,%%%key,2%,%,%$$%%,%,  */  /** * 使用maps中定义的value替换对应其key的由开始标记字符和结束标记字符包含的字符串 * * 当标记对外开始标记后跟着开始标记时或结束标记时表示第一个开始标记为转义符 * 当标记对内开始标记后跟着结束标记时表示第一个开始标记为转义符 * 末尾没有匹配的开始标记将原样输出 */function mapKeys($str,$maps,$fstart=null,$fend=null){  if(!$fstart){      $fstart=“{”;      $fend=“}”;  }  if(!$fend){    $fend=$fstart;      }    // 如果标记相同则使用mapKeysBase进行替换  if($fstart==$fend){return mapKeysBase($str,$maps,$fstart);}   $index=0;  $offset=0;  while(false!==($index=strpos($str,$fstart,$offset))){    # 找到开始标记,处理开始标记之前的数据    $v=substr($str,$offset,$index-$offset);    $offset=$index+strlen($fstart);    $p=true;    while(($find=substr($str,$offset,strlen($fstart)))==$fstart      ||($find=substr($str,$offset,strlen($fend)))==$fend){      $v.=$find;      $offset=$offset+strlen($find);      $p=false;# 如果这个标记是用来转义的      if(false!==($index=strpos($str,$fstart,$offset))){        $v.=substr($str,$offset,$index-$offset);        $offset=$index+strlen($fstart);        $p=true;# 查找下一个开始标记      }    }    $o.=$v;    $v=“”;    # 标记了开始 并找到了 结束    while($p      &&false!==($end=strpos($str,$fend,$offset))){      $v.=substr($str,$offset,$end-$offset);      # 如果这个标记是被转义的      if(($find=substr($str,$end-strlen($fend),strlen($fstart)))        ==$fstart){        $v=substr($v,0,strlen($v)-strlen($fstart)).$fend;        $offset=$end+strlen($fend);        continue;      }      $p=false;    }    if($v){      if(array_key_exists($v,$maps)){        $v=$maps[$v];      }else{        $v=“[".$v."]“;      }      $o.=$v;      $offset=$end+strlen($fend);    }  }  if($p){    $o.=$fstart;  }  $v=substr($str,$offset);  $o.=$v;  return $o;}/** * 使用maps中定义的value替换对应其key的由标记字符包含的字符串 * * 如果标记重复出现 则第一个为转义字符(这也意味着标记字符不能作为key的开始字符) */function mapKeysBase($str,$maps,$find=null){  if(!$find){    $find=“%”;  }  $p=false;  $v=“”;  $index=0;  $offset=0;  while(false!==($index=strpos($str,$find,$offset))){    $v.=substr($str,$offset,$index-$offset);    $offset=$index+strlen($find);    while(substr($str,$offset,strlen($find))==$find){      $v.=$find;      $offset=$offset+strlen($find);      if(false!==($index=strpos($str,$find,$offset))){        $v.=substr($str,$offset,$index-$offset);        $offset=$index+strlen($find);      }    }    if($p){      if(array_key_exists($v,$maps)){        $v=$maps[$v];      }else{        $v=“[".$v."]“;      }      $o.=$v;      $v=“”;      $p=false;    }else{      $o.=$v;      $v=“”;      $p=true;    }  }  if($p){    $v.=$find;  }  $v.=substr($str,$offset);  $o.=$v;  return $o;}?>

取自”http://www.fallseir.com/wiki/PHP/MapKeys.html”

,