C++常用代码

读入多行内容

vector<int> scores;

while(1) {
    string line;
    getline(cin, line); //获取整行到string
    if (line.empty()) { //如果没有输入,跳出循环
        break;
    }
    istringstream iss(line); //将string转为stream
    int d = 0;
    while (iss >> d) { //从stringstream中获取内容
        scores.push_back(d);
    }
}

读取8进制和16进制数

cin >> oct >> i; #输入为八进制数
cin >> hex >> j; #输入为十六进制数
cin >> k; #输入仍为十六进制数, 在cin或cout中指明数制后,该数制将一直有效,直到重新指明使用其他数制。
cin >> dec >> l; #输入为十进制数
cout << hex << j; #输出16进制
cout << j; #输出十进制
#istringstream 同理

字符串分割

std::vector<std::string> split(std::string str,std::string pattern)
{
    std::string::size_type pos;
    std::vector<std::string> result;
    str+=pattern; //扩展字符串以方便操作
    int size=str.size();

    for(int i=0; i<size; i++) {
        pos=str.find(pattern,i); //找到分隔符位置
        if(pos<size) {
            std::string s=str.substr(i,pos-i); //截取到分隔符
            result.push_back(s);
            i = pos+pattern.size()-1;
        }
    }
    return result;
}

string path = "User\lyfne\Documents\C++\hello.cpp";
string filename = path.substr(path.rfind('\\')+1); //取最后一个分割符后的字符, hello.cpp
string rootFolder = path.substr(0, path.find('\\')); //取第一个分隔符前面的字符, User

对map按value排序

typedef pair<string, int> PAIR;
struct CmpByValue {
    bool operator()(const PAIR& lhs, const PAIR& rhs) {
        return lhs.second < rhs.second;
    }
};
int main() {
    //...
    sort(name_score_vec.begin(), name_score_vec.end(), CmpByValue());
    //...
}

sort函数的比较函数

bool compare(const pair<string, int>& p1, const pair<string, int>& p2) {
    return p1.second > p2.second;
}//如果在类内,函数前面需要加static
stable_sort(pairs.begin(), pairs.end(), compare);

string转16进制数

string string_to_hex(const string& str) //transfer string to hex-string
{
    string result="0x";
    string tmp;
    stringstream ss;
    for(int i=0;i<str.size();i++)
    {
        ss<<hex<<int(str[i])<<endl;
        ss>>tmp;
        result+=tmp;
    }
    return result;
}
long long string_to_bit(const string& str)//transfer hex-string to bit
{
    long long result=strtoll(str.c_str(), NULL, 16);//第三个参数base为合法字符范围,base=2,为0、1,base=16,合法字符则为0-F,开头的0x自动忽略
    return result;
}

打印指针地址

int i = 10;
int* ptr = &i;
printf("naive memory alloc: %p\n", ptr);

条件编译

#define FLAG 1
#if FLAG
    // code
#else
    // code
#endif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,744评论 0 5
  • 一.简述如何安装配置apache 的一个开源的hadoop 1.使用root账户登陆 2.修改ip 3.修改hos...
    栀子花_ef39阅读 5,079评论 0 52
  • 今年自从妈妈把楼下的房子租给小胡以后,整个家里的运气都开始不好了,刚开始是妈妈的脚被水泥腐蚀了,接着是我的脚摔了...
    Paulinetian阅读 300评论 0 0
  • 记2017年,公司年会 青春祭 2017 已悄悄溜走 来不及细细品味 今晚 我们在这里聚会 因为年轻 我们热情 因...
    李武_四川阅读 368评论 1 6
  • 当一个灾难来临时,你会怎么做呢?你的答案可能是我当然会选择逃跑呀?如果真的是这样,那就太好了。 正常化偏误指的是当...
    寒冬之城阅读 1,907评论 0 1

友情链接更多精彩内容