对向量<常量字符 *> 进行排序
Sorting a vector<const char *>
for ( fs::directory_iterator dir_itr2( out_folder ); dir_itr2 != end_iter; ++dir_itr2 )
{
cout << "Path del file da inserire nel vettore:" << dir_itr2->path().string().c_str() << endl;
final_path.push_back(dir_itr2->path().string().c_str());
}
sort( final_path.begin(), final_path.end() );
cout << "Vettore di path da aprire in ordine" << endl;
for(vector<const char *>::iterator fp_itr2=final_path.begin(); fp_itr2!=final_path.end(); ++fp_itr2)
{
cout << "Path: " << *fp_itr2 << endl;
}
在这里,我试图将我的路径放在向量中,因为我需要有序列表,但 cout 的输出是这样的:
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180426163618363.txt
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180426163654027.txt
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180530150135770.txt
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180426163414599.txt
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180530150235481.txt
Path del file da inserire nel vettore:/srv/FD/super_tracker/tracks/180530150132796.txt
Path:
Path:
Path:
Path:
Path:
Path:
提前谢谢。
正如评论所说,不要使用char*
.其次,应使用调试器。
sort()
失败的原因是,您根据指针在内存中指向的位置对指针进行排序,而不是使用指向的字符。
您可以使用谓词来告诉sort()
如何对对象进行排序:
sort(begin(final_path), end(final_path),
[](const char* a, const char *b) { return strcmp(a, b) < 0; }
);
但最好的方法肯定是使用string
或直接path
作为矢量元素的类型。
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- EASTL矢量<向量<int>>连续的
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一