首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去WCHAR吗?

去WCHAR吗?
EN

Stack Overflow用户
提问于 2022-09-14 18:04:29
回答 2查看 80关注 0票数 0

嗨,我需要一个WCHAR或其他一些LPCWSTR的文本功能。我有另一个输出字符串的函数:

代码语言:javascript
复制
string run_TypeSt(char op_Sel) {
switch (op_Sel) {
case 'm'://model
{
    searchv_Str = "boatsmodel_s";
    return parseFilestr(42, true);

}
case 't'://type (this is going to be really tricky)
{

}
case 'i'://make
{
    searchv_Str = "boatsmake_s";
}
}

parseFilestr只返回一个字符串:

代码语言:javascript
复制
string parseFilestr(int start, bool tweak) 
{

//lots of omitted code here
string info_Str = "hello";
return info_Str;//return the requested data
}

我的头文件如下所示:

代码语言:javascript
复制
#pragma once
#include <string>
    int parseFilenum(int start, bool tweak);
    int run_Type(char op_Sel);
    std::string parseFilestr(int start, bool tweak);
    std::string run_TypeSt(char op_Sel);

执行过程如下:

代码语言:javascript
复制
#include <string>

using namespace std;

string var;

int APIENTRY wWinMain(...)
{
var = run_TypeSt('m');
}

LRESULT CALLBACK WndProc(...)
{
 case WM_PAINT:
        {

        TextOut(hdc, 5, 5, var, 6);// issue here, var is not compatible with TextOut. Solutions?
        break;
}

最愚蠢的问题是,如何将var更改为使用TextOut的类型?或者除了发短信之外还有其他的选择?我一直为这件事绞尽脑汁,似乎弄不明白。谢谢

EN

回答 2

Stack Overflow用户

发布于 2022-09-14 18:21:49

使用TextOutA代替。它需要一个ANSI字符串(一个[const] char *)。

尽管如此,请阅读Unicode和widechar/char交互的选项。从长远来看,整个程序可能应该使用widechars编写,但与多字节(或单字节)文件和有线格式交互的位除外。

票数 1
EN

Stack Overflow用户

发布于 2022-09-15 00:38:50

试试这个:

代码语言:javascript
复制
std::string FromWideString(const std::wstring& WIDESTRING)
{
   std::string result;
   size_t widelength = WIDESTRING.length();
   char* temp = new char[widelength+2];
   temp[widelength+1]=NULL;
   size_t res = wcstombs(temp, WIDESTRING.c_str(), widelength+1);
   if (res != (size_t) -1)
     result=temp;
   delete temp;
return(result);
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73721366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档