執行redis 命令的時候會默認用 空格 分割命令,所以當value 中存在空格,就會導致命令執行錯誤。於是,我想到了用replace函數去除空格,發現了幾個注意事項:
#include <algorithm>
std::replace (myvector.begin(), myvector.end(), ' ', '\0');
- 單引號里面必須有值,替換空字符為空,注意這里不能用'\0',雖然可以移除第一個空格但是字符串讀到了結束標志就不會往后讀了!
- replace函數是直接修改入參的!所以必須保證入參不是常量
/usr/include/c++/4.8.2/bits/stl_algo.h: In instantiation of ‘void std::replace(_FIter, _FIter, const _Tp&, const _Tp&) [with _FIter = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >; _Tp = char]’:
OrderPool.cpp:226:85: required from here
/usr/include/c++/4.8.2/bits/stl_algo.h:4998:13: error: assignment of read-only location ‘__first.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator*<const char*, std::basic_string<char> >()’
*__first = __new_value;