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

时间:2015-02-26 15:16:50

标签: c++ mfc concatenation c-strings

我对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);

我希望它看起来像第2页'第1页,共2页。我目前的代码不起作用。我收到了错误:

  

表达式必须具有整数或枚举类型

我找到了更难以做到我需要的方法,但我想知道是否有一种类似于我尝试的简单方法。谢谢!

4 个答案:

答案 0 :(得分:4)

如果那是MFC's CString class,那么您可能希望Format与sprintf相似:

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

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

答案 1 :(得分:3)

std::string有你所需要的一切:

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

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

答案 2 :(得分:3)

您也可以使用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;
}

答案 3 :(得分:2)

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

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