【问题标题】:concat LPCTSTR strings连接 LPCTSTR 字符串
【发布时间】:2013-06-13 23:17:23
【问题描述】:
  1. 我创建了一个 md5 散列器,它接受一个文件并返回散列值。
  2. 我使用了“hFind = FindFirstFile(dir, &data)”来列出目录中的文件。
  3. 为了将这些文件的路径传递给我的哈希函数,我需要将文件名连接到填充路径(两者都是 LPCTSTR)。

我的 FileHashComputing 片段 = computing hashValue of a file

代码sn-p:

HANDLE hFind;
WIN32_FIND_DATA data;
LPCTSTR dir = L"c:\\*.*";
LPCTSTR FNAME;
LPCTSTR FULLPATH = L"c:\\";

hFind = FindFirstFile(dir, &data);
FindNextFile(hFind, &data);
printf("%ws\n", data.cFileName);

FNAME = data.cFileName;
printf("%ws\n", FNAME);

【问题讨论】:

  • 仅使用LPCWSTR 会比LPCTSTR 更容易,并允许将(std::wstring(FILEPATH) + FILENAME).c_str() 传递给函数(但我建议存储std::wstrings 并执行c_str()当您需要将其传递给函数时)。
  • 没有工作...只是打印没有文件名的初始路径
  • 我以前从未见过%ws。你用的是什么编译器?它似乎不是我在网上可以找到的任何标准的一部分。

标签: c++ concatenation filepath concat


【解决方案1】:

LPCTSTR 只是指针。将它们连接起来是没有意义的。要连接两个字符串,您需要一些内存来包含结果,但您还没有为此分配任何内存。要处理字符串而无需处理指针和缓冲区的麻烦,请使用 std::wstring 类。

#include <string>

std::wstring full(L"C:\\");
full += data.cFileName;
wprintf(L"%ws\n", full.c_str());

【讨论】:

  • 我以前从未见过%ws。你用的是什么编译器?它似乎不是我在网上可以找到的任何标准的一部分。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2010-10-17
相关资源
最近更新 更多