This question already has answers here:
How to convert std::string to LPCSTR?
(9个答案)
5年前关闭。
我在.txt文档中有一个文件名列表,我想将每个文件从一个文件夹移动到另一个文件夹。
使用MoveFileA()我收到错误,“std::string和LCPSTR之间没有适当的转换”。
打开我的.txt文件后,这是我的代码:
如果我输入完整路径作为MoveFileA的参数,而不是向其发送变量,它可以工作,但是我无法以这种方式遍历.txt文件。
关于如何解决此问题的任何建议?
(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