草庐IT

c++ - 将 int 放入 char 数组中是否需要放置 new 合法?

由于C++别名规则,您不能随意将(一个int*)指向char数组,这似乎达成了一些共识。从另一个问题——Genericchar[]basedstorageandavoidingstrict-aliasingrelatedUB--似乎允许通过placementnew(重新)使用存储。alignas(int)charbuf[sizeof(int)];voidf(){//turnthememoryintoanint:(??)fromthePOVoftheabstractmachine!::new(buf)int;//isthisstrictlyrequired?(aside:it'sobvi

C++将char数组传递给函数

我宁愿只使用字符串,但我们不应该这样做,因为老师讨厌它们并希望我们想办法避免它们。所以我考虑使用结构,但我们在书中并没有那么远,当我跳过时她讨厌它。所以我正在考虑这样做:#include#include#includeusingnamespacestd;voidmyfunc(char&);intmain(){charmyname[12];cout>myname;cout但这不起作用,我不知道为什么。 最佳答案 一种方法是这样做:voidmyfunc(char*myname1){strcpy(myname1,"Billy");}您还需

C++将char数组传递给函数

我宁愿只使用字符串,但我们不应该这样做,因为老师讨厌它们并希望我们想办法避免它们。所以我考虑使用结构,但我们在书中并没有那么远,当我跳过时她讨厌它。所以我正在考虑这样做:#include#include#includeusingnamespacestd;voidmyfunc(char&);intmain(){charmyname[12];cout>myname;cout但这不起作用,我不知道为什么。 最佳答案 一种方法是这样做:voidmyfunc(char*myname1){strcpy(myname1,"Billy");}您还需

c++ - 为什么从 char*** 到 char*const** 的转换无效?

根据N4606,4.5[conv.qual]第3段内容为AprvalueexpressionoftypeT1canbeconvertedtotypeT2ifthefollowingconditionsaresatisfied,wherecvijdenotesthecv-qualifiersinthecv-qualificationsignatureofTj:...Ifthecv1iandcv2iaredifferent,thenconstisineverycv2kfor0上面的最后一个项目符号表明以下转换失败。T1:pointerto/pointerto/pointerto/TT2:p

c++ - 为什么从 char*** 到 char*const** 的转换无效?

根据N4606,4.5[conv.qual]第3段内容为AprvalueexpressionoftypeT1canbeconvertedtotypeT2ifthefollowingconditionsaresatisfied,wherecvijdenotesthecv-qualifiersinthecv-qualificationsignatureofTj:...Ifthecv1iandcv2iaredifferent,thenconstisineverycv2kfor0上面的最后一个项目符号表明以下转换失败。T1:pointerto/pointerto/pointerto/TT2:p

c# - 在 c# 中将 int 添加到 char 以将其 ascii 值向上移动(就像在 c++ 中一样)

在c++中,这段代码可以工作:charc='a';intr=2;c+=r;这与c='c'的作用相同。如何在c#中做同样的事情? 最佳答案 在将其添加到c之前将其转换为charcharc='a';intr=2;c+=(char)r; 关于c#-在c#中将int添加到char以将其ascii值向上移动(就像在c++中一样),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1058321

c# - 在 c# 中将 int 添加到 char 以将其 ascii 值向上移动(就像在 c++ 中一样)

在c++中,这段代码可以工作:charc='a';intr=2;c+=r;这与c='c'的作用相同。如何在c#中做同样的事情? 最佳答案 在将其添加到c之前将其转换为charcharc='a';intr=2;c+=(char)r; 关于c#-在c#中将int添加到char以将其ascii值向上移动(就像在c++中一样),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1058321

c++ - 有一个 strlen 和一个 wcslen,但是否有类似 strlen<char> 或 strlen<wchar_t> 的模板函数?

有一个strlen和一个wcslen函数,但是有一个模板字符数组长度函数,所以你可以做一些类似strlen的事情或strlen?如果没有,那我想我会自己写。 最佳答案 你有std::string使用的char_traits助手。它提供char_traits::length和char_traits::length. 关于c++-有一个strlen和一个wcslen,但是否有类似strlen或strlen的模板函数?,我们在StackOverflow上找到一个类似的问题:

c++ - 有一个 strlen 和一个 wcslen,但是否有类似 strlen<char> 或 strlen<wchar_t> 的模板函数?

有一个strlen和一个wcslen函数,但是有一个模板字符数组长度函数,所以你可以做一些类似strlen的事情或strlen?如果没有,那我想我会自己写。 最佳答案 你有std::string使用的char_traits助手。它提供char_traits::length和char_traits::length. 关于c++-有一个strlen和一个wcslen,但是否有类似strlen或strlen的模板函数?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么 (i|o)fstream 使用 const char* 参数作为文件名?

为什么std::(i|o)fstream类的构造函数和open方法是以constchar*而不是std::string?似乎STL的创建者希望使用他们编写的内容,而不是使用他们编写的类来替换的类型。 最佳答案 库的string部分是在streams之后开发的,没有人想过要进行明显的修改。只是出于政治和时间现实,他们在发布C++98之前从未解决过这个问题,并且没有人会费心再次提出它,因为您总是可以使用.c_str()解决它.C++0x修复了这个问题(参见27.9.1.6)。欢迎使用C++。