小编Adr*_*thy的帖子

编写代码将给定数字转换为单词(例如1234作为输入应输出一千二百三十四)

编写C/C++/Java代码将给定的数字转换为单词.

例如: - 输入:1234

输出:一千二百三十四.

输入:10

输出:十

是否需要数字0到10的完整开关盒.

在每个数字名称之后添加"青少年"(例如:14:4"青少年".)从14到19.

而不是添加"ty"和20到99范围内的数字的数字名称.

等等.

我认为必须有一些更好的方法来解决这个问题.

C代码是首选.

c c++ logic data-structures

3
推荐指数
1
解决办法
10万
查看次数

const unsigned char*to char*

所以,我现在有两种类型:

const unsigned char* unencrypted_data_char;
string unencrypted_data;
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行从一个到另一个的简单数据转换(字符串 - > const unsigned char*)

结果,我有以下几点:

strcpy((unencrypted_data_char),(unencrypted_data.c_str()));
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

error C2664: 'strcpy' : cannot convert parameter 1 from 'const unsigned char *' to 'char *'
Run Code Online (Sandbox Code Playgroud)

有什么建议?我认为使用reinterpret_cast会有所帮助,但它似乎没有什么区别.

c++ string types char

2
推荐指数
1
解决办法
4203
查看次数

从电子邮件正文中调用Win32应用程序

我正在申请.在此用户中输入他的电子邮件ID以获取某些应用程序设置.

一段时间后,他将收到嵌入设置和应用按钮的邮件.一旦用户点击它,我们需要设置设置(在某些文件或注册表中).

桌面应用程序将在启动后读取设置(文件/注册表).

这是要求.我的问题是,

如何在单击带有设置参数的应用按钮时调用Win32/MFC应用程序.

c++ windows winapi mfc

2
推荐指数
1
解决办法
134
查看次数

什么是ComboBox消息359 0x167?

我无法在任何地方找到此信息,包括在官方Windows API文档中.当控件失去焦点时,它将被发送到子类化过程.它没有在winuser.h中定义.

它像这样发送:

0x02D - WM_DELETEITEM
0x167 - ???
0x202 - WM_LBUTTONUP
Run Code Online (Sandbox Code Playgroud)

我的编译器是MinGW,系统Windows XP SP3.

winapi controls combobox message

2
推荐指数
1
解决办法
216
查看次数

字符串.TCHAR LPWCS LPCTSTR CString.什么在这里,简单快捷

TCHAR szExeFileName[MAX_PATH]; 
GetModuleFileName(NULL, szExeFileName, MAX_PATH);

CString tmp;
lstrcpy(szExeFileName, tmp);
CString out;
out.Format("\nInstall32 at %s\n", tmp);
TRACE(tmp);
Run Code Online (Sandbox Code Playgroud)

错误(格式化):

error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t 
*,...)' : cannot convert parameter 1 from 'const char [15]' to 'const wchar_t
Run Code Online (Sandbox Code Playgroud)

我只想获得该程序启动的当前路径并将其复制到CString中,以便我可以在其他地方使用它.我目前正试图通过TRACE来看看它的路径.但字符串,字符,字符数组,我不可能得到所有的海峡.有人可以给我指针吗?

c++ string winapi

2
推荐指数
1
解决办法
1877
查看次数

通过索引获取(真实)监视器的句柄

假设我有3台显示器.如何仅通过索引获取第二个句柄?EnumDisplayMonitors()将无法工作,因为它也枚举伪设备,EnumDisplayDevices()不会给我句柄.

c++ windows winapi c++11

2
推荐指数
1
解决办法
2323
查看次数

其类型(fgets)的字符常量太长

void verification() {
    char pass[50];

    printf(" Enter Password : ");
    fgets(pass, 50, stdin);

    if (pass != 'aaanc6400') {   \\ Warning message in here
        printf("\n Invalid Password.. Please enter the correct password. \n\n");
        verification();
    }
    info();
}
Run Code Online (Sandbox Code Playgroud)

当我编译程序时,在标记的行上它显示警告"字符常量对于它的类型太长"以及"指针和整数之间的比较".然后当我运行代码并输入正确的密码时,它仍会输出密码错误.我究竟做错了什么?

c arrays

2
推荐指数
1
解决办法
651
查看次数

切换情况下的变量:UB还是编译器错误?

我试图确定是调用未定义行为还是遇到编译器错误。

我正在开发一些代码,以解释通过串行连接从外部组件发送到Arduino的消息。这是我开始使用的成员函数的简化版本。[这些Serial.println命令相当于Arduino的printf调试。]

void decodeMessage() {
  switch (getType()) {
    case 0x3A:
      Serial.println("foo message");
      break;
    case 0x3B:
      Serial.println("bar message");
      break;
    case 0x3C:
      Serial.println("zerz message");
      break;
    ... // and so on for 0x3D through 0x40
    case 0x41:
      Serial.println("ack message");
      break;
    default:
      Serial.println("unknown message type");
      break;
  }
}
Run Code Online (Sandbox Code Playgroud)

这对于所有消息类型均适用。然后,我修改了0x3B的大小写,以也检查消息参数中的一些位:

    case 0x3B:
      Serial.println("bar message");
      const auto mask = getParam();
      if (mask & 0x01) Serial.println("bit 0 set");
      if (mask & 0x02) Serial.println("bit 1 set");
      break;
Run Code Online (Sandbox Code Playgroud)

用此代码代替原始的0x3B情况,最后一个消息类型(0x41,“ ack”),其他所有东西都起作用。好像那案子的尸体不见了。默认情况继续有效,从0x3A到0x40也是如此。

经过尝试找出问题原因的许多尝试之后,我意识到我mask在开关中间引入了const变量(),而没有将其限定在特定情况下。当我添加括号时,它再次适用于所有情况: …

c++ gcc arduino switch-statement language-lawyer

2
推荐指数
1
解决办法
89
查看次数

使用概念选择类模板特化

此问题演示了如何使用 C++20 概念为函数模板选择重载。我正在尝试做一些类似的事情:为模板选择专业化

我从一个类模板开始,Angle<T>它包含一个包含弧度角的浮点值。使用概念,我可以确保用户不会Angle使用浮点类型以外的任何东西进行实例化:

template <std::floating_point T> struct Angle { T m_radians; };
Run Code Online (Sandbox Code Playgroud)

后来,我决定让客户使用Angle<T>可以处理整数类型的独特实现。换句话说,我想允许这样的代码:

const auto theta = Angle<float>(3.14f);
const auto phi = Angle<int>(180);
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加一个可比较的模板。

template <std::integral T> struct Angle { T m_degrees; };
Run Code Online (Sandbox Code Playgroud)

编译器将此附加实现视为具有不同约束的模板的重新声明。我尝试了几种不同的方式来表达我的意图,但没有一种方法能满足我尝试过的任何编译器。事实上,我什至找不到用std::enable_if传统 SFINAE来做到这一点的方法——不可否认,我完全有可能不太了解 SFINAE。

我发现的唯一方法需要对每个整数和浮点类型进行不同的专门化。

template <std::floating_point T> struct AngleRad { T m_radians; };
template <std::integral T> struct AngleDeg { T m_degrees; };

template <typename T> struct Angle2 {};
template …
Run Code Online (Sandbox Code Playgroud)

c++ template-specialization c++-concepts c++20

2
推荐指数
1
解决办法
63
查看次数

索引C++字符串的最简单方法?

我希望能够遍历C++字符串中的每个字符.最简单的方法是什么?首先将其转换为C字符串?我实际上没有能够以任何方式使它工作,但这是我迄今为止所尝试的:

string word = "Foobar";  
for (int i=0; i<word.length(); ++i) {
  cout << word.data()[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ string

1
推荐指数
2
解决办法
133
查看次数