编写C/C++/Java代码将给定的数字转换为单词.
例如: - 输入:1234
输出:一千二百三十四.
输入:10
输出:十
是否需要数字0到10的完整开关盒.
在每个数字名称之后添加"青少年"(例如:14:4"青少年".)从14到19.
而不是添加"ty"和20到99范围内的数字的数字名称.
等等.
我认为必须有一些更好的方法来解决这个问题.
C代码是首选.
所以,我现在有两种类型:
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会有所帮助,但它似乎没有什么区别.
我正在申请.在此用户中输入他的电子邮件ID以获取某些应用程序设置.
一段时间后,他将收到嵌入设置和应用按钮的邮件.一旦用户点击它,我们需要设置设置(在某些文件或注册表中).
桌面应用程序将在启动后读取设置(文件/注册表).
这是要求.我的问题是,
如何在单击带有设置参数的应用按钮时调用Win32/MFC应用程序.
我无法在任何地方找到此信息,包括在官方Windows API文档中.当控件失去焦点时,它将被发送到子类化过程.它没有在winuser.h中定义.
它像这样发送:
0x02D - WM_DELETEITEM
0x167 - ???
0x202 - WM_LBUTTONUP
Run Code Online (Sandbox Code Playgroud)
我的编译器是MinGW,系统Windows XP SP3.
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来看看它的路径.但字符串,字符,字符数组,我不可能得到所有的海峡.有人可以给我指针吗?
假设我有3台显示器.如何仅通过索引获取第二个句柄?EnumDisplayMonitors()将无法工作,因为它也枚举伪设备,EnumDisplayDevices()不会给我句柄.
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)
当我编译程序时,在标记的行上它显示警告"字符常量对于它的类型太长"以及"指针和整数之间的比较".然后当我运行代码并输入正确的密码时,它仍会输出密码错误.我究竟做错了什么?
我试图确定是调用未定义行为还是遇到编译器错误。
我正在开发一些代码,以解释通过串行连接从外部组件发送到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++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++字符串中的每个字符.最简单的方法是什么?首先将其转换为C字符串?我实际上没有能够以任何方式使它工作,但这是我迄今为止所尝试的:
string word = "Foobar";
for (int i=0; i<word.length(); ++i) {
cout << word.data()[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)