小编ST3*_*ST3的帖子

在注册表中设置DWORD值

我正在尝试在注册表中设置DWORD值.我使用文本值,但现在我想用数字(0)设置另一个值.但它并没有写出来.
这是我的代码:

RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\pager", 0, KEY_ALL_ACCESS, &hKey);
RegSetValueEx(hKey, TEXT("Save"), 0, REG_SZ, (const BYTE*)0x00, sizeof(DWORD));
RegCloseKey(hKey);
Run Code Online (Sandbox Code Playgroud)

PS:密钥已经存在,值为1,所以我试图用值0覆盖它(我没有创建一个新的).

c++ windows registry winapi

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

示例如何取消libCurl请求

我问我,如何取消卷曲请求:

res = curl_easy_perform(curl);
Run Code Online (Sandbox Code Playgroud)

c curl libcurl

5
推荐指数
3
解决办法
8948
查看次数

在C++中输出多字节字符串

我有多字节字符串的问题.我简化了我的问题如下:

std::wstring str = L"mult?byte test string";
std::wofstream f;
f.open("F:\\dump.txt");
f << str;
f.close();
Run Code Online (Sandbox Code Playgroud)

并且转储文件的内容是:"mult"

为什么它会削减str的剩余部分,而我已经使用了wstring和wofstream?

谢谢

c++ multibyte wofstream

5
推荐指数
1
解决办法
1085
查看次数

wcout函数不会打印法语字符

我使用wcin来在wchar_t中存储单个字符.然后我尝试使用wcout调用和法语字符'é'打印它:但我无法在我的控制台上看到它.

我的编译器是g ++ 4.5.4,我的操作系统是Ubuntu 12.10 64位.

这是我的尝试(wideChars.cpp):

#include <iostream>

int main(){
    using namespace std;

    wchar_t aChar;
    cout << "Enter your char : ";
    wcin >> aChar;
    wcout << L"You entered " << aChar << L" .\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我开始编程时:

$ ./wideChars 
Enter your char : é
You entered  .
Run Code Online (Sandbox Code Playgroud)

那么,这段代码有什么问题?

c++ g++ wchar-t

5
推荐指数
1
解决办法
909
查看次数

将std :: string转换为const BYTE*for RegSetValueEx()

我有一个获取std :: string的函数.那个函数调用

函数RegSetValueEx

第五个参数是注册表值的值,并期望一个const BYTE*类型的变量.所以我必须将std :: string转换为const BYTE*,并将结果数组的长度作为第6个参数.

我找到了一种方法,但它感觉很难看,我真的不明白发生了什么.这是该功能的精简版:

void function(const std::string& newValue)
{
    HKEY keyHandle;
    if(RegOpenKeyEx(HKEY_CLASSES_ROOT, TEXT("some key"),0,KEY_ALL_ACCESS,&keyHandle) == ERROR_SUCCESS)
    {
        std::wstring wNewValue;
        wNewValue.assign(newValue.begin(),newValue.end());

        if (RegSetValueEx(keyHandle, TEXT("some value"), NULL, REG_SZ, (const BYTE*)(LPCTSTR)(wNewValue.c_str()), wNewValue.size()*2)==ERROR_SUCCESS)
        {
            //do something
        }
        RegCloseKey(keyHandle);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我首先创建一个宽字符串(定义了UNICODE),然后使用双重转换,并且对于长度我必须做*2,否则它只会设置输入字符串的一半.

这种形式的演员是正常/最好的方式吗?

为什么*2,会有什么更好的方法?

c++ windows registry winapi stl

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

无法将std :: wstring写入wofstream

我在Linux系统上使用Qt/C++.我需要将一个QLineEdit文本转换为一个文本std::wstring并将其写入std::wofstream.它适用于ascii字符串,但是当我输入任何其他字符(阿拉伯语或乌兹别克语)时,文件中没有任何内容.(文件大小为0字节).

这是我的代码:

wofstream customersFile;
customersFile.open("./customers.txt");
std::wstring ws = lne_address_customer->text().toStdWString();
customersFile << ws << ws.length() << std::endl;
Run Code Online (Sandbox Code Playgroud)

John Smith在行编辑中输入的输出是John Smith10.但对于unicode字符串,什么都没有.

首先我认为这是一个问题QString::toStdWString(),但customersFile << ws.length();写出所有字符串的正确长度.所以我想我在写wstring文件时做错了.[?]

编辑:

我在eclipse中再次写它.并用g ++ 4.5编译它.结果是一样的:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
   cout << "" << endl; // prints
   wstring ws = L"????"; // this is an Arabic "Hello"
   wofstream wf("new.txt");
   if (!wf.bad())
      wf << ws;
   else
      cerr << …
Run Code Online (Sandbox Code Playgroud)

c++ qt4 wstring wofstream

4
推荐指数
1
解决办法
8899
查看次数

如何读取UCS-2文件?

我正在编写一个程序来获取UCS-2 Little Endian中*.rc文件编码的信息.

int _tmain(int argc, _TCHAR* argv[]) {
  wstring csvLine(wstring sLine);
  wifstream fin("en.rc");
  wofstream fout("table.csv");
  wofstream fout_rm("temp.txt");
  wstring sLine;
  fout << "en\n";
  while(getline(fin,sLine)) {
    if (sLine.find(L"IDS") == -1)
      fout_rm << sLine << endl;
    else
      fout << csvLine(sLine);
  }
  fout << flush;
  system("pause");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在"en.rc"的第一行是#include <windows.h>sLine如下所示:

[0]     255 L'ÿ'
[1]     254 L'þ'
[2]     35  L'#'
[3]     0
[4]     105 L'i'
[5]     0
[6]     110 L'n'
[7]     0
[8]     99  L'c'
.       .
.       . …
Run Code Online (Sandbox Code Playgroud)

c++ unicode encoding character-encoding wofstream

4
推荐指数
1
解决办法
4250
查看次数

CRITICAL_SECTION用于设置和获取单个bool值

现在写class得很复杂,觉得我用得太多了CRITICAL_SECTION.

据我所知,某些类型的原子操作总是在没有任何硬件或软件中断的情况下执行.

我想检查一下我是否理解正确.

  • 要设置或获取原子值,我们不需要CRITICAL_SECTION因为这样做不会有中断.
  • bool 是原子的.

所以有我的陈述,想问一下,如果它们是正确的,如果它们是正确的,那么什么类型的变量也可以设置或没有CRITICAL_SECTION

PS我在谈论为每种方法获取或设置一个单值,而不是两个,而不是五个,而是一个.

c c++ windows winapi multithreading

4
推荐指数
1
解决办法
495
查看次数

为什么这个奇怪的定义为PTHREAD_CREATE_JOINABLE,PTHREAD_CREATE_DETACHED

pthread.h,可以找到以下定义:

/* Detach state.  */
enum
{
  PTHREAD_CREATE_JOINABLE,
#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
  PTHREAD_CREATE_DETACHED
#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
};
Run Code Online (Sandbox Code Playgroud)

为什么这个定义混合枚举和定义?怎么解释呢?此外,它#define正在定义相同的东西.

c

4
推荐指数
1
解决办法
420
查看次数

c ++中的new运算符

我正在阅读"Thinking in c ++"的第13章.以下内容来自本书.

MyType*fp = new MyType(1,2);

在运行时,调用malloc(sizeof(MyType))的等价物,使用(1,2)作为参数列表调用MyType的构造函数,并将结果地址作为this指针.到指针指向fp时.

我对这句大胆的句子感到困惑.这是什么意思?

c++ new-operator

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