This question already has answers here:
How to convert std::string to LPCSTR?

(9个答案)


5年前关闭。




我在.txt文档中有一个文件名列表,我想将每个文件从一个文件夹移动到另一个文件夹。
使用MoveFileA()我收到错误,“std::string和LCPSTR之间没有适当的转换”。
打开我的.txt文件后,这是我的代码:
while (std::getline(myfile, line))
{
std::string oldLocation = "C:\\Users\\name\\Desktop\\docs\\folder1\\" + line;
std::string newLocation = "C:\\Users\\name\\Desktop\\docs\\folder2\\" + line;

MoveFileA(oldLocation, newLocation);
}

如果我输入完整路径作为MoveFileA的参数,而不是向其发送变量,它可以工作,但是我无法以这种方式遍历.txt文件。

关于如何解决此问题的任何建议?

最佳答案

LCPSTR表示指向字符串的长常量指针,这意味着它是一个以null结尾的c字符串。
std::string是一个对象。这是不同的。但是幸运的是,它提供了一种便捷的方法 c_str ,它提供了一个指向常量c样式字符串的指针。因此,正如评论所述,您应该通过:
MoveFileA(oldLocation.c_str(), newLocation.c_str());
值得注意的是,您不能将其放置在所有位置,而不是char*,但只能在不修改字符串的情况下使用。它返回const char*。这就是LCPSTR中C变得重要的地方。

关于c++ - MoveFileA()不喜欢我的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27571284/

10-13 03:31