【发布时间】:2018-07-07 14:46:30
【问题描述】:
我有一个文件的字符串存储路径,我正在做一些字符串处理,索引std::string 对象,但输出字符串很奇怪,代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string x = "C:\\Users\\lenovo\\Desktop\\QBFdata.txt";
string temp = "";
for(int i = x.length() - 1; i > 0; i--)
{
if(x[i] == '\\')
break;
else
temp.append(&x[i]);
}
cout << temp << "\n";
}
但输出显然很奇怪,它再次将temp 的内容附加到它。
txttxt.txta.txtta.txtata.txtdata.txtFdata.txtBFdata.txtQBFdata.txt
请不要提出任何替代方案,因为我已经有了解决方案
int main()
{
string x = "C:\\Users\\NK\\Desktop\\QBFdata.txt";
int pos = x.find_last_of('\\');
string temp = x.substr(pos + 1);
cout << temp;
}
效果很好。
我想知道第一个代码有什么问题。
谢谢。
我正在使用代码块 16.01
【问题讨论】:
-
很容易使用
std::filesystem::path(如果有的话)或std::experimental::filesystem::path。或Boost filesystem 及其path类。 -
您正在调用
append的重载,它接受一个以空结尾的const char*- 了解它是如何工作的 -
“请不要提出任何替代方案,因为我已经有了解决方案” 专业提示:您可以在此处自行回答问题。