我对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页。我目前的代码不起作用。我收到了错误:
表达式必须具有整数或枚举类型
我找到了更难以做到我需要的方法,但我想知道是否有一种类似于我尝试的简单方法。谢谢!
答案 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_string
:std::string pages = std::string("Page ") + std::to_string(i) + (" of ") + std::to_string(maxPage);
如果您没有C ++ 11,则可以使用ostringstream
或boost::lexical_cast
。