常用语句 - C++:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
(阿奔移动页面C++ 常用语句常用语句 - C++
 
(未显示同一用户的11个中间版本)
第4行: 第4行:
// map 相同</nowiki></small>
// map 相同</nowiki></small>
==== 结构体 ====
==== 结构体 ====
  <small><nowiki>struct RES {
  <small><nowiki>struct GVAL {
     int type;       // 0=exit, 1=ok
     int t;   // 0=NULL, 1=int, 2=string
     string val;     // value
    int i;
     string s;
};
};
RES res1;
GVAL res1;
res1 = {1, "ok"};</nowiki></small>
res0 = {0};
res1 = {1, 10};
res2 = {2, 0, "ok"};
-.OR.-
res2.t = 2;
res2.s = "ok";
 
// gcc version 9.4.0</nowiki></small>
 
==== 数组 ====
<small><nowiki>char buffer[msg_len + 1] = {0};          // 全部为 \0
 
memset(buffer, '\0', sizeof(buffer));    // 全部为 \0
 
P.S. char buffer[msg_len + 1] = {"a"}    // "a", \0, \0...</nowiki></small>


=== 转换 ===
=== 转换 ===
==== 数值转为字符串 ====
==== 数值 <-> 字符串 ====
// 数值 -> 字符串
  #include <string>
  #include <string>
  str1 = to_string(num1);
  str1 = to_string(num1);
==== 字符串转换成整数 ====
// 字符串 -> 数值
  #include <string>
  #include <string>
  num1 = stoi(str1);
  num1 = stoi(str1);
==== 字符数组 <-> 字符串 ====
// 字符数组 -> 字符串
string str1(ch1);
// .-OR-.
str1 = ch1;
// 字符串 -> 字符数组
len1 = str1.copy(ch1, str1.size());
ch1[len1] = '\0';
// .-OR-.
strcpy(ch1, str1.c_str());
//strncpy(ch1, str1.c_str(), 10);


=== 条件 ===
=== 条件 ===
第26行: 第56行:
  if (map1.count("key1")) {
  if (map1.count("key1")) {
     ...
     ...
}
==== try ====
try {
    return stoi(str1);
} catch (exception e) {
    return 0;
  }
  }


第47行: 第83行:
...
...
for_each(map1.begin(), map1.end(), printPair);</nowiki>
for_each(map1.begin(), map1.end(), printPair);</nowiki>
=== chrono ===
==== 延时函数 ====
#include <thread>            // sleep_for
#include <chrono>            // milliseconds
std::this_thread::sleep_for(std::chrono::milliseconds(200));  // Threads sleep for 200 ms
usleep 问题
* 在一些平台下不是线程安全,如 HP-UX 以及 Linux
* usleep 影响信号


=== Compile ===
=== Compile ===

2024年10月6日 (日) 19:49的最新版本

赋值

map

unordered_map<string, int> um1 = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// map 相同

结构体

struct GVAL {
    int t;    // 0=NULL, 1=int, 2=string
    int i;
    string s;
};
GVAL res1;
res0 = {0};
res1 = {1, 10};
res2 = {2, 0, "ok"};
-.OR.-
res2.t = 2;
res2.s = "ok";

// gcc version 9.4.0

数组

char buffer[msg_len + 1] = {0};          // 全部为 \0

memset(buffer, '\0', sizeof(buffer));    // 全部为 \0

P.S. char buffer[msg_len + 1] = {"a"}    // "a", \0, \0...

转换

数值 <-> 字符串

// 数值 -> 字符串
#include <string>
str1 = to_string(num1);

// 字符串 -> 数值
#include <string>
num1 = stoi(str1);

字符数组 <-> 字符串

// 字符数组 -> 字符串
string str1(ch1);
// .-OR-.
str1 = ch1;

// 字符串 -> 字符数组
len1 = str1.copy(ch1, str1.size());
ch1[len1] = '\0';
// .-OR-.
strcpy(ch1, str1.c_str());
//strncpy(ch1, str1.c_str(), 10);

条件

map 元素是否存在

#include <map>
map<string, int> map1;
map1["key1"] = 123;
if (map1.count("key1")) {
    ...
}

try

try {
    return stoi(str1);
} catch (exception e) {
    return 0;
}

循环

map

# C++11
for (const auto& pair1 : map1) {
    cout << pair1.first << ": " << pair1.second << endl;
}

# 基本方法:迭代器
for (map<int, string>::iterator it = map1.begin(); it != map1.end(); ++it) {
    cout << it->first << ": " << it->second << endl;
}

# 函数封装
#include <algorithm>
void printPair(const pair<int, string>& p) {
    cout << p.first << ": " << p.second << endl;
}
...
for_each(map1.begin(), map1.end(), printPair);

chrono

延时函数

#include <thread>            // sleep_for
#include <chrono>            // milliseconds
std::this_thread::sleep_for(std::chrono::milliseconds(200));  // Threads sleep for 200 ms

usleep 问题

  • 在一些平台下不是线程安全,如 HP-UX 以及 Linux
  • usleep 影响信号

Compile

当前函数名

在大多数编译器中,__FUNCTION__ 宏会被替换为当前函数名

cout << "Current Function: " << __FUNCTION__ << endl;
  • __FUNCTION__  : myfun
  • __func__  : myfun
  • __PRETTY_FUNCTION__ : void sys_info(string), gcc