精华内容
下载资源
问答
  • 后缀std
    千次阅读
    2018-07-21 13:50:54
    #include <iostream>
    using namespace std;
    
    void fun1()
    {
         std::string name = "bird.png";
    	for (int i = 1; i < name.length(); i++ )
    	{
    		if (name[i] == '.')
    		{
    			name = name.substr(0, i);
    			break;
    		}
    	}
    	cout<<name<<endl;
    }
    
    void fun2()
    {
         char s[50] = "";
        for(int i = 1; i <= 10; i++ )
        {
             sprintf(s, "%02d", i);
             cout << "bird" << s << ".png"<<endl;
        }
    }
    
    
    int main()
    {
       fun1();
       fun2();
       return 0;
    }
    

     

    更多相关内容
  • } } 比如:输入yolov6s.onnx则执行函数返回onnx,注意返回没有点,如果只想获取文件路径+文件名无后缀,则 std::string Yolov6Manager::GetFileNameWithPath(std::string &strFile) { std::string::size_type ...
    std::string GetFileExt(std::string &strFile, int isLower=0)
    {	
    	if(isLower == 1)
    	{
    		std::string strTemp = strFile;
    		std::transform(strTemp.begin(), strTemp.end(), strTemp.begin(), ::tolower);
    		std::string::size_type pos = strTemp.rfind('.');
    		std::string strExt = strTemp.substr(pos == std::string::npos ? strTemp.length() : pos+1);
    		return strExt;
    	}
    	else
    	{
    		std::string::size_type pos = strFile.rfind('.');
    		std::string strExt = strFile.substr(pos == std::string::npos ? strFile.length() : pos+1);
    		return strExt;
    	}	
    }
    

    比如:输入yolov6s.onnx则执行函数返回onnx,注意返回没有点,如果只想获取文件路径+文件名无后缀,则

    std::string Yolov6Manager::GetFileNameWithPath(std::string &strFile)
    {	
    		std::string::size_type pos = strFile.rfind('.');
    		std::string str = strFile.substr(0,pos);
    		return str;
    	
    }

    展开全文
  • EndnoteX3已经提供了Chinese Std GBT7714 (author-year).ens和Chinese Std GBT7714 (numeric).ens,分别对应著者-出版年制和顺序编码制。但是这两个自带的style都不能完全满足国家标准的要求,需要自己在此基础上...
  • //using namespace std; //char s[10000]; //stack<int> p; //long long x,y; //int main(){ // gets_s(s); // int i=0; // while(s[i]!='@'){ // switch(s[i]){ // case '+': // y=p.top();p.pop...
  • std::string src = argc > 1 ? argv[1] : "12+((2+73)*4)-15"; std::cout << "src: " << src << std::endl; Expression expression; Expression::PrefixType result; int ret = expression.ToPrefix(src, ...
  • 一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不...当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样
  • 一个函数就可以在Linux和Windows中调用,获得文件名和文件后缀

    假如给你一个文件路径,你可以将其中的文件名和文件后缀提取出来嘛?
    不会没有关系,此篇博客提供一个函数,即可在Windows环境下调用,也可以在Linux环境下调用,去获取一个文件路径的文件名和文件后缀!


    一、返回值 bool 版

    需要包含头文件:
    #include <stdio.h>
    #include <string.h>
    #include <string>

    代码如下:

    /******************************************************************************
     *
     * 功能:
     *		获得 (文件名.后缀) 和 (文件名) 和 (文件后缀),Windows和Linux通用!
     *
     * 参数:
     *		_filePaht:C语言字符指针,文件路径字符串
     *		_fileName:C++字符串引用,获得[(文件名.后缀)|(文件名)]返回
     *		_fileName:C++字符串引用,获得(文件名.后缀)返回
     *		_fileSuffix:C++字符串引用,获得(后缀)返回
     *		_dot:true,后缀带点(.txt);false,后缀不带点(txt);默认值为true
     *
     * 返回值:
     *		成功返回true,失败返回false
     *
     ******************************************************************************/
    bool get_fileName_fileSuffix(const char *_filePaht, std::string &_fileNames, std::string &_fileName, std::string &_fileSuffix, bool _dot = true) {
    
    	// 合法性检查
    	if (!_filePaht) return false;
    	std::string str = _filePaht;
    	if (str.empty()) return false;
    
    
    	// .txt    的情况
    	if (str.at(0) == '.') return false;
    	// file.   的情况
    	if (str.at(str.size() - 1) == '.') return false;
    	
    
    	char c = '\0';
    
    // 区分此函数是在Windows环境调用还是Linux环境调用
    #if defined (_WIN64) || defined (WIN32) || defined (_WIN32)
    	//printf("---Windows---\n");
    	c = '\\';
    #else
    	//printf("---Linux---\n");
    	c = '\/';
    #endif
    
    	// 去除字符串中的路径,剩下文件名
    	std::string filename = strrchr(_filePaht, c) == NULL ? "" : strrchr(_filePaht, c) + 1;
    	if (filename == "") {
    		/* 说明字符串是file.txt或者file形式 */
    		filename = _filePaht;
    	
    	} else {
    		/* 说名字符串是C:\\abc\\file.txt或者C:\\abc\\file形式 */
    	}
    
    	// 找到 . 的位置
    	size_t _size = filename.rfind(".");
    	// 获得文件名,不包含后缀
    	_fileName = filename.substr(0, _size);
    
    	// 获得文件后缀
    	std::string strsuffix = "";
    	if (_size != -1) {	// 不等于-1说明有后缀 file.txt形式
    
    		// true后缀带点,false后缀不带点
    		if (_dot == true) {
    			strsuffix = filename.substr(_size);     // 文件后缀 .txt
    
    		} else {
    			strsuffix = filename.substr(_size + 1);     // 文件后缀 txt
    		}
    	}
    	// 后缀
    	_fileSuffix = strsuffix;
    
    	// 获得文件名.后缀(file.txt | file)
    	_fileNames = filename;
    
    	return true;
    }
    

    具体过程就不解释了,都有详细注释,去看,去理解吧。

    1. 测试Windows路径:
      C:\abc\file.txt
      C:\abc\file
      file.txt
      file

      int main(void) {
      
      	// C:\\abc\\file.txt
      	// C:\\abc\\file
      	// file.txt
      	// file
      
      	std::string fileNames = "";
      	std::string fileName = "";
      	std::string fileSuffix = "";
      	bool suffix = true;
      	bool flag = false;
      
      	//printf("---Windows---\n");
      
      	flag = get_fileName_fileSuffix("C:\\abc\\file.txt", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "C:\\abc\\file.txt", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("C:\\abc\\file", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "C:\\abc\\file", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("file.txt", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "file.txt", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("file", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "file", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	fileNames = "";
      	fileName = "";
      	fileSuffix = "";
      	flag = get_fileName_fileSuffix("", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "\"\"", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	return 0;
      }
      

      运行截图:
      这个是后缀带点(.txt)的测试
      在这里插入图片描述

    2. 测试Linux路径:
      /abc/file.txt
      /abc/file
      file.txt
      file

      int main(void) {
      
      	std::string fileNames = "";
      	std::string fileName = "";
      	std::string fileSuffix = "";
      	bool suffix = false;
      	bool flag = false;
      
      	// /abc/file.txt
      	// /abc/file
      	// /file.txt
      	// file
      	//printf("---Linux---\n");
      
      	flag = get_fileName_fileSuffix("/abc/file.txt", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "/abc/file.txt", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("/abc/file", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "/abc/file", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("file.txt", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "/file.txt", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	flag = get_fileName_fileSuffix("file", fileNames, fileName, fileSuffix, suffix);
      	printf("str = %s, fileNames = %s   fileName = %s   fileSuffix = %s   flag = %d\n\n", "/file", fileNames.c_str(), fileName.c_str(), fileSuffix.c_str(), flag);
      
      	return 0;
      }
      

      运行截图:
      这个是后缀不带点(txt)的测试
      在这里插入图片描述


    二、返回值 后缀索引 版

    第一个版本是两个星期前写好的,后续回来看后,觉得返回值好像不是太友好,于是乎更改了以下版本代码。
    返回的是 后缀索引 。

    处理过程不变!

    需要包含头文件:
    #include <stdio.h>
    #include <string.h>
    #include <string>

    /******************************************************************************
     *
     * 功能:
     *		获得 (文件名.后缀) 和 (文件名) 和 (文件后缀),Windows和Linux通用!
     *
     * 参数:
     *		_filePaht:			C语言字符指针,文件路径字符串
     *		_fullFileName:		C++字符串引用,获得[(文件名.后缀) 或 (文件名)]返回
     *		_fileName:			C++字符串引用,获得(文件名.后缀)返回
     *		_fileSuffix:		C++字符串引用,获得(后缀)返回
     *		_dot:				true,后缀带点(.txt);false,后缀不带点(txt);默认值为true
     *
     * 返回值:
     *		有后缀返回"."的索引;没有后缀则返回-1
     *
     ******************************************************************************/
    int get_fileName_fileSuffix(const char *_filePaht, std::string &_fullFileName, std::string &_fileName, std::string &_fileSuffix, bool _dot = true) {
    
    	// 合法性检查
    	if (!_filePaht) return -1;
    	std::string str = _filePaht;
    	if (str.empty()) return -1;
    
    	// .txt    的情况
    	if (str.at(0) == '.') return -1;
    	// file.   的情况
    	if (str.at(str.size() - 1) == '.') return -1;
    
    
    
    	char c = '\0';
    
    	// 区分此函数是在Windows环境调用还是Linux环境调用
    #if defined (_WIN64) || defined (WIN32) || defined (_WIN32)
    	//printf("---Windows---\n");
    	c = '\\';
    #else
    	//printf("---Linux---\n");
    	c = '\/';
    #endif
    
    	// 去除字符串中的路径,剩下文件名
    	std::string filename = strrchr(_filePaht, c) == NULL ? "" : strrchr(_filePaht, c) + 1;
    	if (filename == "") {
    		/* 说明字符串是file.txt或者file形式 */
    		filename = _filePaht;
    
    	} else {
    		/* 说名字符串是C:\\abc\\file.txt或者C:\\abc\\file形式 */
    	}
    
    	// 找到 . 的位置
    	size_t _size = filename.rfind(".");
    	// 获得文件名,不包含后缀
    	_fileName = filename.substr(0, _size);
    
    	// 获得文件后缀
    	std::string strsuffix = "";
    	if (_size != -1) {	// 不等于-1说明有后缀 file.txt形式
    
    		// true后缀带点,false后缀不带点
    		if (_dot == true) {
    			strsuffix = filename.substr(_size);     // 文件后缀 .txt
    
    		} else {
    			strsuffix = filename.substr(_size + 1);     // 文件后缀 txt
    		}
    	}
    	// 后缀
    	_fileSuffix = strsuffix;
    
    	// 获得文件名.后缀(file.txt | file)
    	_fullFileName = filename;
    
    	return _size;
    }
    

    测试:

    int main(void) {
    
    	std::string str = "abc.jpg";
    	//std::string str = ".abcjpg";
    	//std::string str = "abcjpg.";
    	std::string fullFilename, filename, fileSuffix;
    	int r = get_fileName_fileSuffix(str.c_str(), fullFilename, filename, fileSuffix, true);
    	printf("r = %d\n", r);
    	printf("fullFilename = %s   filename = %s   fileSuffix = %s\n", fullFilename.c_str(), filename.c_str(), fileSuffix.c_str());
    
    
    	return 0;
    }
    

    运行截图:
    在这里插入图片描述


    总结

    本人在做项目时经常需要在一个路径中提取出文件名和文件路径,但是在项目中写的是零散的代码,所以在这里总结成一个函数,通过这个函数去获取就方便多了,而且windows和linux通用!(废了两个三个小时写代码、测试和写博客,值得!)

    展开全文
  • 这篇文章给大家介绍了C++整数常量的前缀和后缀的示例代码,详情如下所示: ...using namespace std; int main() { int x = 666; // 十进制 int y = 020; // 八进制 int z = 0XF; // 十六进制 cout
  • string GetFileExt(string&... std::transform(strTemp.begin(), strTemp.end(), strTemp.begin(), ::tolower); string::size_type pos = strTemp.rfind('.'); string strExt = strTemp.s.
    string GetFileExt(string& strFile, int isLower)
    {	
    	if(isLower == 1)
    	{
    		string strTemp = strFile;
    		std::transform(strTemp.begin(), strTemp.end(), strTemp.begin(), ::tolower);
    		string::size_type pos = strTemp.rfind('.');
    		string strExt = strTemp.substr(pos == std::string::npos ? strTemp.length() : pos+1);
    		return strExt;
    	}
    	else
    	{
    		string::size_type pos = strFile.rfind('.');
    		string strExt = strFile.substr(pos == std::string::npos ? strFile.length() : pos+1);
    		return strExt;
    	}	
    }

    参考:http://blog.sina.com.cn/s/blog_af95b18b01017jpu.html

    展开全文
  • 中缀表达式转后缀.cpp

    2022-06-06 15:09:44
    using namespace std; struct Stack{ char *Data; int top; int MaxSize; }; Stack * Creat(int Size) { Stack * s=(Stack *)malloc(sizeof(Stack)); s->Data=(char *) malloc(sizeof(char)*Size); s->top=-1...
  • 字符串-后缀树和后缀数组详解

    千次阅读 2021-05-15 16:17:16
    后缀树和后缀数组可以解决大部分字符串问题。光速从入门到放弃,看这一篇就够了。 例题: HDU-1403最长公共子串 洛谷P2408 不同子串个数 HDU-5769Substring
  • while (getline(fd, line)) { } C++:从完整路径中提取文件名、不带后缀的名字、后缀名 #include #include using namespace std; void main() { string path = "C:\\Users\\Administrator\\Desktop\\text\\data.22...
  • std命名空间

    千次阅读 多人点赞 2019-05-15 19:05:00
    C++ std命名空间 1. 什么是命名空间 在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域中的所有标示符,而且其本身也是由标示符表示的。命名空间的使用目的是为了将逻辑相关的标示符限定在一起,...
  • C++批量修改文件后缀名的Qt程序 方法一: #include "stdafx.h" #include <stdio.h> #include <fstream> #include <Windows.h> #include <cstdio> #include <iostream> #include <...
  • using namespace std; int main(){ string{""};//string string("abc");//char * int ret=string{"a"}.compare(string{"b"});//大于1,小于-1,等于0 int ret2=string{"abc"}.compare(1,2,string{"bc"});//"ab
  • 此板条箱甚至在std库上也没有依赖性,因此它甚至可以在嵌入式系统中使用。 配置 将此箱子添加到您的Cargo.toml : [ dependencies ] psl = " 1 " 例子 let suffix = psl :: suffix ( b"www.example.com" )?; ...
  • std::thread c++11在语言层面对并发编程提供了有力的支持,std::thread就是一例,它以线程的方式启动异步任务。 关于thread创建线程对象并使用的用法,请参考 std::thread创建线程的几种方式 使用thread对象,并在...
  • C/C++判断文件后缀

    千次阅读 2018-04-04 15:16:27
    1. std::string name("***.**"); std::string extension("**"); name.compare(name.size() - extension.size(), extension.size(), extension) == 0;2.#include &lt;string.h&gt; ...
  • using namespace std::literals; int main(int argc, char* argv[]) { std::string_view s1 = "abc\0\0def"; std::string_view s2 = "abc\0\0def"sv; std::string s3 = "abc\0\0def"; std::string s4 = "abc\0\0...
  • std::string

    千次阅读 2019-01-08 15:37:33
    C++/C++11中std::string是个模板类,它是一个标准库。使用string类型必须首先包含头文件。作为标准库的一部分,string定义在命名空间std中。 构造函数初始化 #include &amp;lt;iostream&amp;gt; #include...
  • 【PTA】后缀表达式 (中缀表达式转化为后缀表达式)
  • C++删除指定文件夹下面的指定后缀的文件 1.boost的安装和使用 参考我的另一篇博客boost的安装和使用 2.使用boost的filesystem #include<boost/filesystem.hpp> #include<iostream> using namespace std;...
  • windows下使用C/C++编写一个方法,传入文件的完整路径,取出文件的基本名称,后缀名等数据。
  • 中缀表达式转后缀表达式以及表达式的求值

    千次阅读 多人点赞 2021-11-14 13:48:19
    上面已经说的很详细了(自认为,咳咳),如果代码还有哪里不知道原因的话,可以评论或者私聊我, 博主很闲,看到了就会及时回复的 #include #include #include #include #include using namespace std; stack<char> op...
  • 1 问题描述 下面的一段代码(代码来源...using namespace std; int main() { cout << "Hello, world!" << endl; return 0; } 2 解决方式 上面(参考)使用gcc编译test.cpp会报错: 1、我们常见的编译器
  • C++获取文件名(去除后缀)的方法

    千次阅读 2021-08-23 11:09:25
    编码中有可能会遇到给定的是含文件后缀的文件全名,如果只展示、输出文件名,需要进行一些处理。 以下说的c string函数需要 #include <cstring>;C++ STL string需要 #include <string> 1、strtok
  • using namespace std; /* * @brief 得到一个文件夹后缀名为extension的所有文件 * param[in] folderName 文件夹名 extension 需要获得的后缀名 vec_filenames 文件名存入容器 */ bool bathReadFileNamesInFolders...
  • C++时间类 std::chrono

    千次阅读 2022-04-15 09:50:31
    std::chrono

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,287
精华内容 28,514
关键字:

后缀std