过去 20 年中是否发生了一些变化,会在 MFC CString.Format 上产生此编译错误?

问题描述 投票:0回答:1

我是一名长期的 Java/C# 开发人员,我正在尝试使用 Richard Jones 于 2000 年出版的一本书自学 C++,特别是 MFC。

我收到此编译错误:

'ATL::CStringT>>::Format':没有重载函数可以转换所有参数类型

我从书中的示例中输入的以下代码:

int r;
double rd;
int i;
CString s;

std::cout << "\nLargest random integer: " << RAND_MAX << std::endl;

//Provide seed for generator
srand((unsigned)time(NULL));

std::cout << "\n5 random integers: \n";
for (i = 0; i < 5; i++) {
    r = rand();
    s.Format("%d ", r);  
    std::cout << s << std::endl;
}

我正在使用 Visual Studio 2022,我想知道是否需要对其进行不同的配置才能使用 20 多年前的示例?

也许与我的困惑有关,我什至没有看到此处列出的

CString
类:演练:使用新的 MFC Shell 控件 - 仅
CStringArray
CStringList

按照我书中的指示,我尝试在控制台程序中使用这些 MFC 类作为起点。我在项目属性中将 C++ 语言标准设置为“默认(ISO C++14 标准)”。我想知道将其设置为 2000 年左右的标准是否会有帮助?

c++ mfc visual-studio-2022
1个回答
3
投票

默认情况下,Visual Studio 中的字符集设置为 Unicode,这就是您收到错误的原因。

要解决该问题,请按照以下步骤操作:

  1. 转到项目 --> [your_Project_Name] 属性:

  1. 在配置属性下,选择“高级”:

  1. 最后在右侧窗口点击“字符集”,选择“不设置”:

单击“确定”,您的代码应该可以编译。

必需包括文件:

#include <atlstr.h>
#include <iostream>       
#include <ctime>
© www.soinside.com 2019 - 2024. All rights reserved.