1627년( 인조 5) 생원시에 합격하여 성균관유생이 되고, 1637년 정시문과에 장원으로 급제하였다. 1639년 지평이 되고, 그 이듬해 청나라가 명나라를 공격하기 위해 수륙군(水陸軍)의 원병을 청하는 동시에 원손을 볼모로 심양(瀋陽)에 보내라고 요청하자, 이를 극력 반대하는 만언소(萬言疏)를 올렸다.
이 사실이 청나라에 알려져 척화파(斥和派)인 김상헌(金尙憲) · 채이항(蔡以恒) 등과 함께 1641년 심양으로 잡혀가 심한 고문을 받고 투옥되었으나 굽히지 않았다. 더욱이 옥중에서 김상헌의 시문집인 『설교집(雪窖集)』의 편찬을 도왔다. 1642년 심양에서 의주 감옥으로 옮겨졌다가 풀려났다.
1645년 지제교 · 헌납을 역임하고 지평이 되었을 때 강빈사건(姜嬪事件)에 반대하다가 왕의 뜻에 거슬려 빛을 보지 못하였다. 효종이 즉위하면서 1650년(효종 1) 부수찬이 되고 이어 헌납이 되어 시독관(侍讀官)을 겸하였다.
교리가 되어 조귀인(趙貴人)의 소생인 숭선군 징(崇善君 澂) · 낙선군 축(樂善君 潚) 등에 대한 대우를 소홀히 해서는 안 된다고 건의하였다.
암행어사로 나갔다가 사간에 임명되었으며, 집의로서 『 인조실록』 편찬에 참여하여 그 공으로 당상관에 승서되었다. 1654년 승지, 1656년 대사간이 되고, 이어 대사성 · 이조참의 · 승지를 역임하고 다시 대사성이 된 이듬해<감고신성잠(鑑古愼成箴)> 180구를 지어 효종으로부터 표피(豹皮)를 하사받았다.
이후 대사간이 되고 여러 차례 이조참의를 지내면서 남인인 윤휴(尹鑴)의 등용을 적극 반대하다가 면직된 일도 있었다. 현종이 즉위한 1659년에는 찬집청당상(撰集廳堂上)으로 『 효종실록』 편찬에 참여하였다. 호조참의 · 예조참의를 역임하고 다시 호조참의가 되었을 때 김징(金澄)의 탄핵을 받아 파직되어 한때 벼슬을 떠났다.
1668년(현종 9) 예조참판이 되고, 이어 한성부좌윤 · 형조참판으로 있다가 이듬해 경기도관찰사로 나갔다. 그 뒤 예조참판을 지내고 한성부우윤에 임명되는 동시에 하흥군(夏興君)에 봉해졌으나 경기도관찰사로 있을 때 상녀취첩(喪女娶妾)했다는 이유로 이옥(李沃) 등의 탄핵을 받았다.
문장이 뛰어나 문집으로 『 회곡집』이 있고, 시조 2수가 전한다. 여주의 고산서원(孤山書院)에 배향되었다. 시호는 문충(文忠)이다.