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() 不喜欢我的论点 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

“金字塔原理”-写作

如何动态添加输入字段[重复]

无法保存 MySQL 查询 [重复]

错误 [ERR_UNHANDLED_ERROR]:未处理的错误。 (“不正确的论点”)

我如何传递论点?

MFC MDI - “遇到不正确的论点”