草庐IT

c++ - 如何检查 char* p 是否到达 C 字符串的末尾?

templateIntTypeatoi_unsafe(constchar*source){IntTyperesult=IntType();while(source){autot=*source;result*=10;result+=(*source-48);++source;}returnresult;}在main()中我有:char*number="14256";atoi_unsafe(number);但条件while(source)似乎无法识别source已遍历整个C字符串。它应该如何正确检查字符串的结尾? 最佳答案 while

c++ - 如何从 LPWSTR 转换为 'const char*'

在使用C++/CLI将结构从C#转换为C++之后:publicvaluestructSampleObject{LPWSTRa;};我想打印它的实例:printf(sampleObject->a);但是我得到了这个错误:Error1errorC2664:'printf':cannotconvertparameter1from'LPWSTR'to'constchar*'如何将LPWSTR转换为char*?提前致谢。 最佳答案 使用wcstombs()函数,位于.下面是如何使用它:LPWSTRwideStr=L"Somemessage";

c++ - 从 std::string 复制到 char 数组并以 null 终止结果

我有一个VisualStudio2008C++03应用程序,我想在其中从std::string复制到char数组,但我需要char数组以null终止,即使它必须截断字符串才能这样做.例如,这可以按需要工作:inlinevoidCopyAndNullTerminate(conststd::string&source,char*dest,size_tdest_size){source.copy(dest,dest_size);usingstd::min;char*end=dest+min(dest_size-1,source.size());*end='\0';}intmain(){enu

c++ - 有没有一种简单的方法来对 char* 数组进行排序? C++

我在文件中有一个char*数组。我工作的公司将数据存储在平面文件中。有时数据是经过排序的,但有时不是。我想对文件中的数据进行排序。现在我可以从头开始编写代码来执行此操作。有没有更简单的方法?当然,就地排序是最好的选择。我正在处理大文件并且内存很少。但我会考虑所有选择。所有字符串的长度都相同。这是一些示例数据:thedataisoffixedlengththeDataisoffixedlengththISdataisoffixedlengt这将代表三个长度为28的记录。应用知道长度。每条记录都以CRLF(\r\n)结尾,但对于这种类型来说应该无关紧要。 最佳答

c++ - 以char 'e'为输入进行比较

好的,所以我正在做一个书中的练习,将不同类型的货币转换为美元。出于某种原因,当我输入“e”作为char变量的输入并将其与if语句中的“e”进行比较时,比较不起作用,但是如果我将其替换为另一个字母,它将正常工作。这是怎么回事?继承人的代码:intmain(){constdoubleyen_per_dollar=.013;constdoublepound_per_dollar=1.55;constdoubleeuro_per_dollar=1.29;doubleamount=1;charunit='';std::cout>amount>>unit;if(unit=='y')std::cou

c++ - 完全模拟缺失的不同内置类型(特别是 : char16_t and char32_t)

C++11有两种新的字符整型数据类型,char16_t和char32_t。我想为没有不同类型的编译器模拟它们,以便重载I/O操作以将它们视为字符而不是整数值。这些是要求:不同(无typedef)。普通系统上的精确宽度(alauint16_t和uint32_t)允许使用其他C++11功能(见下文第一次尝试)必须善于处理文字;char16_tc16=u"blablaunicodetextblabla";必须有效。如果char16_t可以用于数学运算符,显然这也需要起作用。我在文字部分失败的第一次尝试是强类型枚举:enumchar16_t:uint16_t;这也有其他缺点,也许可以通过自己提

c++ - GNU/G++ 4.9(2.95.3 之前的版本)的 C++11 中的 string_char_traits<char>

我有一些遗留的C++代码(用于使用GNUg++2.95.3进行编译)具有以下声明std::basic_string,malloc_alloc>x;头文件是#include现在,我正在迁移到GUg++4.9,但出现此错误:1.std/bastring.h未找到2.当我改变#include作为#include,我收到以下错误:error:'string_char_traits'wasnotdeclaredinthisscopestd::basic_string,malloc_alloc>x;error:templateargument2isinvalidstd::basic_string,

c++ - 为什么我不能用 reset() 删除 unique_ptr<char[]>?

当我有一个指向单个对象的唯一指针时,我可以用reset()删除它:std::unique_ptrvariable(newchar);variable.reset();但是,这不适用于std::unique_ptr包含一个数组。为什么?删除此类指针的正确方法是什么?我正在使用EmbarcaderoC++Builder10.1。相关标准是C++11。我的观察当我有一个包含数组的唯一指针时,编译失败:std::unique_ptrvariable(newchar[10]);variable.reset();错误信息是nomatchingfunctiontocallfor'reset'.这也失

c++ - std::cin 是否无法将命令行中的用户输入传递给类型为 char 的变量?

我尝试使用以下代码传递不同的输入,但未能打印出消息:“糟糕,您没有输入ASCII字符,更不用说y或n了!”我输入了各种非char类型的Unicode字符(基本上只是输入ALT+随机数,例如™、š、²、Ž、±。这些都没有产生错误。cin是否默默地忽略或丢弃不是的输入ASCII字符?std::cout>yOrN;isChar=std::cin.fail();//checkiftheuserdidnotenteranASCIIchar,e.g.testwithaUnicodecharacterif(isChar){std::cout操作系统:Windows1064位,基于x64的处理器编译器

c++ - List<Char> 在 C++ 中键入 constexpr 字符串

我正在尝试模仿cons-cell就像函数式编程语言中的列表结构,在C++中使用constexpr.我有一个pair类型,开始。这是两个不同事物的持有者,但也支持嵌套对。这是代码。templatestructpair{constexprpair():_car{E1{}},_cdr{E2{}}{}constexprpair(constE1&car,constE2&cdr):_car{car},_cdr{cdr}{}constexprautocar()const{return_car;}constexprautocdr()const{return_cdr;}friendstd::ostrea