与 MFC 的 CString 连接的最合适的方法是什么

What is the most appropriate way to concatenate with MFC's CString

我对 C++ 有点陌生,我的背景是 Java。我正在研究 hdc 打印方法。 我想知道将字符串和整数的组合连接成一个 CString 的最佳实践。我正在使用 MFC 的 CString。

int i = //the current page
int maxPage = //the calculated number of pages to print


CString pages = ("Page ") + _T(i) + (" of ") + _T(maxPage);

我希望它看起来像 'Page 1 of 2'。我当前的代码不起作用。我收到错误:

Expression must have integral or enum type

我发现了更困难的方法来完成我需要的事情,但我想知道是否有一种类似于我正在尝试的简单方法。谢谢!

std::string 应有尽有:

auto str = "Page " + std::to_string(i) + " of " + std::to_string(maxPage); 

如评论中所述,您可以通过 str.c_str() 访问底层 C 字符串。 Here 是一个实际工作的例子。

如果你有 C++11,你可以使用 std::to_stringstd::string pages = std::string("Page ") + std::to_string(i) + (" of ") + std::to_string(maxPage);

如果您没有 C++11,您可以使用 ostringstreamboost::lexical_cast

你也可以使用 stringstream 类

#include <sstream>
#include <string>

int main ()
{
  std::ostringstream textFormatted;

  textFormatted << "Page " << i << " of " << maxPage;

  // To convert it to a string
  std::string s = textFormatted.str();
  return 0;
}

如果那是 MFC's CString class, then you probably want Format,它与 sprintf 相似:

CString pages;
pages.Format(_T("Page %d of %d"), i, maxPage);

即您可以 assemble 使用常规 printf-format specifiers 在运行时替换数字的字符串。