【发布时间】:2022-01-25 22:19:14
【问题描述】:
下面的代码使用文件的路径提取文件的文件名。
#include <iostream>
#include <vector>
using namespace std;
int main() {
cout << "Program operating..." << endl;
string s = "C:\\Users\\user\\Pictures\\Strategic_Offense_Logo_1";
string name;
for (unsigned int i = s.size() - 1; i > 0; i--) {
if (s[i] == '\\') {
for (unsigned int j = i + 1; j < s.size(); j++) {
if (s[j] == '.' || j == s.size() - 1) {
if (j == s.size() - 1)
j++;
vector<char> v(j - i - 1);
unsigned int l = 0;
for (unsigned int k = i + 1; k < j; k++) {
v[l++] = s[k];
}
char* vectorAsArray = &v[0];
name = vectorAsArray;
name.resize(v.size());
break;
}
}
break;
}
}
cout << name << endl;
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
cout << "Program operating..." << endl;
string s = "C:\\Users\\user\\Pictures\\Strategic_Offense_Logo_1.png";
string name;
for (unsigned int i = s.size() - 1; i > 0; i--) {
if (s[i] == '\\') {
for (unsigned int j = i + 1; j < s.size(); j++) {
if (s[j] == '.' || j == s.size() - 1) {
if (j == s.size() - 1)
j++;
vector<char> v(j - i - 1);
unsigned int l = 0;
for (unsigned int k = i + 1; k < j; k++) {
v[l++] = s[k];
}
char* vectorAsArray = &v[0];
name = vectorAsArray;
name.resize(v.size());
break;
}
}
break;
}
}
cout << name << endl;
}
有没有更有效的方法来做到这一点?
目的: 我正在制作一个纹理类,我想通过它的名称而不是它的路径或组成的 ID 来引用纹理。
【问题讨论】:
-
你考虑过使用文件系统头吗?在 VS2019 和 2022 中功能齐全
-
您必须通过以下方式将语言设置设置为使用 C++17 或更高版本:项目 > 属性 > C/C++ > 语言 > C++ 语言标准 > C++17、C++20 或预览版C++ 最新
标签: c++ file path filenames visual-studio-2022