MoveFileA() 不喜欢我的论点 [重复]
Posted
技术标签:
【中文标题】MoveFileA() 不喜欢我的论点 [重复]【英文标题】:MoveFileA() doesn't like my arguments [duplicate] 【发布时间】:2014-12-19 17:47:47 【问题描述】:我有一个 .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 文件。
关于如何解决此问题的任何建议?
【问题讨论】:
MoveFileA(oldLocation.c_str(), newLocation.c_str());
太棒了!感谢您的帮助。
【参考方案1】:
LCPSTR
表示指向字符串的长常量指针,这意味着它是一个空终止的 c 字符串。
std::string
是一个对象。这是不同的东西。但幸运的是,它提供了一个方便的方法c_str
,它提供了一个指向常量 c 样式字符串的指针。所以正如评论所说,你应该去:
MoveFileA(oldLocation.c_str(), newLocation.c_str());
值得注意的是,你不能把它放在每个地方而不是char*
,但只有当字符串不会被修改时。它返回const char*
。这就是 LCPSTR 中的 C 变得重要的地方。
【讨论】:
以上是关于MoveFileA() 不喜欢我的论点 [重复]的主要内容,如果未能解决你的问题,请参考以下文章