草庐IT

char_line

全部标签

c++ - 如何将 wchar_t** 转换为 char**?

我得到argv作为wchar_t**(见下文),因为我需要使用unicode,但我需要将它转换为char**。我该怎么做?intwmain(intargc,wchar_t**argv){ 最佳答案 有不止一种方法可以做到这一点。根据您的环境和可用的编译器/标准库/其他库,您至少有三种选择:使用std::locale和std::codecvt方面;使用C语言环境函数,如std::mbstowcs();使用第3方函数,例如*nix上的iconv()或Windows上的WideCharToMultiByte()。您真的需要进行转换吗?您应

c++ - 什么时候删除由 (char *) 作为函数参数指向的内存?

代码1:voidfoo(char*text){}foo("Test");据我所知,这将会发生:内存分配给“测试”指针被创建并将其值复制到(char*textpointer),因此(char*text)指向内存中的位置,其中“Test”是(最好说,在第一个字符上"测试")函数执行完后,销毁了指向“Test”开头的指针(char*text),这不是内存泄漏吗?问题是,“Test”什么时候被删除,什么时候函数只销毁指针做某事不是更好吗?像那样?:char*_text="Test";foo(_text);delete[]_text; 最佳答案

c++ - 将 char 数组的最后 8 个字节设置为 __uint64

我正在通过维基百科上的伪代码实现SHA1算法。它说我应该将原始长度作为64位附加到消息中,所以我尝试了以下操作://new_messageisoftypechar[]andis9+byteslong*((__int64*)(new_message-8))=(__int64)length;这会导致new_message的内存损坏。有人能发现错误吗?谢谢!编辑:天哪,我太傻了。new_message指向我数组的开头,难怪它崩溃了! 最佳答案 new_message-8将从当前指针返回8个字节,这是意图吗?append意味着在末尾添加8个

c++ - 视觉 C++ :error C2664: 'GetModuleFileNameW' : cannot convert parameter 2 from 'char [260]' to 'LPWCH'

当我尝试编译我的项目时,我遇到了一些我无法解决的错误。无论如何这是代码之一:public:voidInit(HMODULEhModule,stringFilename){charszLoc[MAX_PATH];GetModuleFileName(hModule,szLoc,sizeof(szLoc));char*dwLetterAddress=strrchr(szLoc,'\\');*(dwLetterAddress+1)=0;strcat(szLoc,Filename.c_str());__OutStream.open(szLoc,ios::app);}错误是:errorC2664:

c++ - 编译时间一致的 char 类型哈希

我想实现Symbol之类的就像ruby一样。为此,我创建了一个用户定义的文字,它返回一个std::hash的std::basic_string相应的。代码很棒,但正如我所读somewhere哈希函数在同一程序的多次执行中可能不一致。此外,我想在编译时进行此计算,这是1)std::hash不支持的和2)如果std::hash会破坏代码返回值变化。所以我写了下面的实现,基于java.lang.String.hashCode实现。typedefsize_tsymbol;templateconstexprsize_tconstant_hash(constCharT*p,size_th=0)no

c++ - 从 void* 到 char* 的无效转换 C++ 从文件读取链表

我正在尝试编写一个从文本文件读取到链表的程序这是列表结构。#include#include#includeusingnamespacestd;structVideo{charvideo_name[1024];//videonameintranking;//Numberofviewerhitscharurl[1024];//URLVideo*next;//pointertoVideostructure}*head=NULL;//EMPTYlinkedlist这里是读入代码:voidload(){structVideo*temp;temp=(Video*)malloc(sizeof(Vid

c++ - 如何将int转换为char C++

我在分配时遇到问题,我必须在方法中将时钟的三个变量(inthour、intminutes和boolafternoon)转换为字符串。我尝试将int转换为char,然后用char替换每个字符串。如果转换成功与否,该函数应该返回T/F。这是我目前所拥有的:classTime{private:inthour;intminutes;boolafternoon;public:voidsetHour(inthr);voidsetMinutes(intmin);voidsetAfternoon(boolaft);intgetHour();intgetMinutes();boolgetAfternoo

c++ - 模板化 ostream 重载歧义错误 : basic_ostream<char> vs const char[]

我正在尝试了解ostream重载。考虑一下#includeusingstd::ostream;enumclassA{a1,a2,a3};templateostream&operator编译时出现如下错误test.cpp:13:17:error:ambiguousoverloadfor‘operator}’and‘constchar[3]’)returnout虽然取消注释正常功能和注释模板版本工作正常。为什么二义性不是在正常功能中,为什么是模板化版本 最佳答案 非模板运算符不会引起任何歧义,因为该运算符本身无法解决此调用:return

c++ - 如何区分 LineSegment 类和 Line 类?

我使用两个Point来定义一个Line和一个LineSegment,例如:classPoint{...};classLine{Pointp1,p2;//...};classLineSegment{Pointp1,p2;//...};LineSegment与Line的定义相同,所以我一开始使用了typedefLineLineSegment而不是定义另一个LineSegment类。但是很快,我发现我无法定义函数distance来计算点与线或点与线段之间的距离。classPoint{...};classLine{Pointp1,p2;//...};typedefLineLineSegment

C++ const char* 和 const char[] 的区别

我读到一个关于两者之间区别的问题:constchar*和constchar[]有一段时间,我认为数组只是指针的语法糖。但是有些事情困扰着我,我有一段类似于以下的代码:namespaceSomeNamespace{constchar*str={'b','l','a','h'};}我明白了,错误:缩放器对象“str”需要初始化器中的一个元素。所以,我尝试了这个:namespaceSomeNamespace{constcharstr[]={'b','l','a','h'};}成功了,起初我认为这可能与应用了额外的操作有关当它是一个constchar*时,GCC从来不喜欢在函数外执行操作(无论