常用语句 - C++:修订间差异
跳到导航
跳到搜索
(→结构体) |
小 (阿奔移动页面C++ 常用语句至常用语句 - C++) |
||
(未显示同一用户的10个中间版本) | |||
第4行: | 第4行: | ||
// map 相同</nowiki></small> | // map 相同</nowiki></small> | ||
==== 结构体 ==== | ==== 结构体 ==== | ||
<small><nowiki>struct | <small><nowiki>struct GVAL { | ||
int | int t; // 0=NULL, 1=int, 2=string | ||
string | int i; | ||
string s; | |||
}; | }; | ||
GVAL res1; | |||
res1 = {1, "ok"}; | res0 = {0}; | ||
res1 = {1, 10}; | |||
res2 = {2, 0, "ok"}; | |||
-.OR.- | -.OR.- | ||
res2.t = 2; | |||
res2.s = "ok"; | |||
// gcc version 9.4.0</nowiki></small> | // 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); | |||
=== 条件 === | === 条件 === | ||
第31行: | 第56行: | ||
if (map1.count("key1")) { | if (map1.count("key1")) { | ||
... | ... | ||
} | |||
==== try ==== | |||
try { | |||
return stoi(str1); | |||
} catch (exception e) { | |||
return 0; | |||
} | } | ||
第52行: | 第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