c++ 17 获取文件后缀名代码
时间: 2023-12-12 09:02:54 浏览: 317
获取文件后缀名可以通过查找文件名中最后一个点号后面的字符串来实现。以下是一个简单的 C++17 代码示例:
```cpp
#include <string>
#include <filesystem>
#include <iostream>
int main() {
std::string filename = "example.txt";
std::filesystem::path path(filename);
std::string extension = path.extension().string();
if (extension.empty()) {
std::cout << "File has no extension" << std::endl;
} else {
std::cout << "Extension: " << extension << std::endl;
}
return 0;
}
```
在此示例中,我们使用了 `std::filesystem` 库来获取文件路径,并使用 `std::string` 类型来存储文件扩展名。如果文件没有扩展名,则返回一个空字符串。
相关问题
c++ CString获取文件后缀
您可以使用 CString 类的 ReverseFind 函数和 Mid 函数来获取文件的后缀名。具体步骤如下:
1. 使用 ReverseFind 函数查找最后一个'.'字符的位置。
2. 使用 Mid 函数截取字符串,从'.'字符位置的下一位开始截取,直到字符串末尾。
3. 这样就可以得到文件的后缀名了。
示例代码如下:
```c++
CString strFileName = "test.txt";
int nIndex = strFileName.ReverseFind('.');
CString strSuffix = strFileName.Mid(nIndex + 1);
```
在上面的示例中,变量 strSuffix 将包含字符串 "txt",即文件的后缀名。
c++代码 更改文件后缀
下面是一个简单的 C++ 代码示例,用于更改文件后缀名:
```cpp
#include <iostream>
#include <string>
#include <fstream>
int main() {
std::string filename = "example.txt";
std::string new_extension = ".md";
std::string new_filename = filename.substr(0, filename.find_last_of(".")) + new_extension;
std::ifstream input_file(filename, std::ios::binary);
std::ofstream output_file(new_filename, std::ios::binary);
output_file << input_file.rdbuf();
input_file.close();
output_file.close();
std::cout << "File extension changed from .txt to .md" << std::endl;
return 0;
}
```
在此示例中,我们首先定义了原始文件名,然后定义了新的文件扩展名。我们使用 `substr` 函数从原始文件名中提取文件名和扩展名,并使用 `find_last_of` 函数查找文件名中最后一个点的位置。然后我们将新的文件名保存在 `new_filename` 变量中。
接下来,我们使用 `ifstream` 和 `ofstream` 对象打开原始文件和新文件。我们使用 `rdbuf` 函数从输入文件中读取内容,并将其写入输出文件。最后,我们关闭输入和输出文件。
最后,我们打印一条消息,指示文件扩展名已更改。
注意,此示例假定文件已经存在,并且您有足够的权限来读取和写入文件。如果文件不存在或您无法读取或写入文件,则可能会出现错误。
阅读全文