我正在使用我在stackoverflow上找到的代码..这似乎对我的要求很有效。
#include <stdio.h>
#include <iostream>
#include <string>
#include <map>
#include <conio.h>
int main () {
std::map< std::string, std::string > MyMap;
std::map< std::string, std::string >::iterator MyIterMap;
MyMap["Teste1"] = "map1";
MyMap["Teste2"] = "map2";
MyMap["Teste3"] = "map3";
MyIterMap = MyMap.begin();
while(MyIterMap != MyMap.end() ) {
std::string key = (*MyIterMap).first;
std::cout << "Key: " << key << ", Value: " << MyMap[key] <<std::endl;
MyIterMap++;
}
_getch();
return 0;
}
在每次循环之后,在MyInterMap++
之前我试图根据key
的值取消文件链接作为文件名。例如:
unlink ("/tmp/" + key);
当我尝试编曲时,我得到:
In function ‘int main()’:
error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘int unlink(const char*)’
有人可以建议我这样做吗?
谢谢你的时间。
答案 0 :(得分:0)
您需要将指向C字符串的指针传递给unlink函数:
const std::string filename = "/tmp/" + key;
unlink(filename.c_str());
在这种情况下可能不是问题,因为unlink
不太可能将C字符串指针存储在任何地方,但请注意,一旦变量filename
变为指针,指针就会变为悬空状态超出范围。如果将指针传递给从std::string
获得的C字符串,请确保在std::string
被销毁后不会使用该指针。
答案 1 :(得分:0)
我已经使用
解决了这个问题 unlink( ("/tmp/" + key).c_str() ) ;
由于