簡體   English   中英

const char* 到 WCHAR?

[英]const char* to WCHAR?

嗨,我需要一個 WCHAR 或其他一些 LPCWSTR 用於文本輸出 function。 我有另一個 function 輸出字符串:

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 只返回一個字符串:

string parseFilestr(int start, bool tweak) 
{

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

我的 header 文件如下所示:

#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);

執行看起來像這樣:

#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 一起使用的類型? 或者也許有文本輸出的替代方法? 我一直在努力解決這個問題,似乎無法弄清楚。 謝謝

請改用TextOutA 它需要一個 ANSI 字符串(一個[const] char * )。

也就是說,請閱讀 Unicode 以及用於寬字符/字符交互的選項。 從長遠來看,整個程序可能應該用寬字符編寫,除了與多字節文件名和有線格式交互的位。

嘗試這個:

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);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM