C++ string转long long,substr,docker服务命令和Centos 7 配置防火墙

本文介绍了如何将C++ string转换为long long,substr函数的灵活用法,包括文件名处理、读取文件夹、Docker命令、CentOS7防火墙配置等实用技巧。涵盖了字符串操作和系统管理的基础知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一周(10.17~10.23)

一,C++ string转long long

我们可以用stringstream进行转换,头文件#include <sstream>

#include <iostream>
#include <sstream>
using namespace std;
​
int main()
{
    string strLLNum = "1234567890123";
    stringstream strIn;
    strIn<<strLLnum;
    long long llNum;
    strIn>>llNum;
    cout<<llNum;
    return 0;
}

二,C++ string 简单截取字符串使用之substr

substr 函数原型:

原型:string substr (size_t pos = 0, size_t len = npos) const;
参数说明:pos=截取起始位 ,len=截取长度。
返回值:子字符串

用法一:截取下标从2(也就是从第三个字符起)开始到字符串结尾的字符串

#include <string>
#include <iostream>
using namespace std;
​
int main() {
​
    string strInfo = "Hello Word!";
    strInfo = strInfo.substr(2);
    cout << "strInfo=" << strInfo.c_str() << endl; //最终输出显示:strInfo=llo Word!
    return 0;
}

用法二:截取文件后缀类型名称

    string strFileName = "ComponentConfig.ini";
    strFileName = strFileName.substr(strFileName.find_last_of(".") + 1);
    cout << "strFileName=" << strFileName.c_str() << endl;                   //最终输出显示:strFileName=ini,得到扩展名

用法三:截取下标从2(第3个字符起)开始截取3个字符的字符串

    string strInfo = "Hello Word!";
    strInfo = strInfo.substr(2, 3);
    cout << "strInfo=" << strInfo <<  endl; //最终输出显示:strInfo=llo,从下标元素为2开始向后到第3位

用法四:截取文件名而不要扩展名

    string strFileName = "ComponentConfig.ini";
    strFileName = strFileName.substr(0, strFileName.find_last_of("."));
    cout << "strFileName=" << strFileName.c_str() << endl;          
//最终输出显示:strFileName=ComponentConfig,截取到不含扩展名的文件名

三,c++读取文件夹下的所有文件名

// linux
#include <iostream>
#include <sys/types.h>
#include <dirent.h>
#include <vector>
void getFiles(string path, vector<string>& filenames)
{
    DIR *pDir;
    struct dirent* ptr;
    if(!(pDir = opendir(path.c_str()))){
        cout<<"Folder doesn't Exist!"<<endl;
        return;
    }
    while((ptr = readdir(pDir))!=0) {
        if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0){
            filenames.push_back(path + "/" + ptr->d_name);
        }
    }
    closedir(pDir);
}

四,docker服务命令

# 启动:
systemctl start docker
​
#守护进程重启:
systemctl daemon-reload
​
#重启docker服务:
systemctl restart docker / service docker restart
​
#关闭:
docker service docker stop / docker systemctl stop docker

docker出现Error response from daemon: driver failed programming external connectivity on endpoint解决方法

systemctl restart docker

五,Centos 7 配置防火墙

1、查看firewall服务状态

systemctl status firewalld

2、查看firewall的状态

firewall-cmd --state

3、开启、重启、关闭、firewalld.service服务

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

4、查看防火墙规则

firewall-cmd --list-all 

5、查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
​
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
​
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
### C++ 中 `string::substr` 方法的用法 在 C++ 的标准库中,`std::string` 类提供了成员函数 `substr()` 来获取字符串的一部分。该方法接受两个参数:起始位置要提取的字符数。 #### 函数签名 ```cpp string substr (size_t pos = 0, size_t len = npos) const; ``` - `pos`: 子串的起始索引,默认为 0。 - `len`: 要复制的最大字符数量;如果此值大于直到字符串结尾的剩余字符,则尽可能多地复制[^1]。 当指定的位置超出范围时,将会抛出 `out_of_range` 异常。如果不提供长度参数或提供的长度超过了字符串末端,则返回从指定位置到字符串结束的所有字符。 #### 使用示例 下面是一些具体的使用案例: ##### 获取整个字符串作为子串 ```cpp #include <iostream> #include <string> int main() { std::string str = "HelloWorld"; // 提取全部内容 std::cout << str.substr(0); // 输出 HelloWorld return 0; } ``` ##### 从特定位置开始截取固定长度的子串 ```cpp #include <iostream> #include <string> int main() { std::string str = "HelloWorld"; // 从第3个字符开始,截取5个字符 std::cout << str.substr(2, 5); // 输出 lloWo return 0; } ``` ##### 处理越界情况 尝试访问超过字符串大小的部分会导致异常: ```cpp try { std::string s = "short"; auto sub = s.substr(7); } catch(const std::out_of_range& e){ std::cerr << "Error: " << e.what(); // 抛出 out_of_range 错误 } ``` 通过上述代码片段展示了如何安全有效地利用 `substr()` 进行字符串操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值