!=如何在 Visual Studio for C# 中将此字符更改为此字符?有人知道该怎么做吗?预先非常感谢。

很抱歉,如果这不是一个正确的问题,但我在互联网上没有找到任何关于如何做到这一点的答案。
谁能解释一下为什么这段代码不起作用,这里是新手。
#include <stdio.h>
int main()
{
char * ptr = "hello";
int i, cnt =0;
while(ptr[i] != NULL)
{
i++;
cnt++;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢 !
试图理解这一点,ptr 指向包含 hello 的字符数组,如 'h'、'e'、'l'、'l'、'o'、'\0'。我正在尝试获取它的长度。
来自C++标准工作草案:
默认构造函数 ([class.default.ctor])、复制构造函数、移动构造函数 ([class.copy.ctor])、复制赋值运算符、移动赋值运算符 ([class.copy.assign]) 和预期析构函数 ([class .dtor])是特殊成员函数。
(https://eel.is/c++draft/special)
给出以下代码:
struct S {
S(int, float, double);
};
Run Code Online (Sandbox Code Playgroud)
在我的理解中, 的构造函数S不是特殊的成员函数,因为它既不是默认构造函数,也不是复制构造函数,也不是移动构造函数。
我想知道标准是否仍然认为构造函数是成员函数(或“唯一”的东西)。
我阅读了 C++ 工作草案中有关成员函数、特殊成员函数和构造函数的部分,但没有找到任何合理的答案来回答这个问题。我还查看了 StackOverflow,但大多数答案都指出所有构造函数都被视为特殊成员函数,这似乎与标准相矛盾。
我正在尝试编写一个函数模板,该模板采用通用引用作为参数,以便它可以接受左值引用和右值引用。
当我写下这个:
template <typename Type>
concept is_number = std::integral<Type> || std::floating_point<Type>;
template <typename Type1, typename Type2>
requires is_number<Type1> && is_number<Type2>
[[nodiscard]] inline auto add(Type1&& num1, Type2&& num2) noexcept
{
return num1 + num2;
}
const std::int64_t num1 { 50 };
const double num2 { 30.6 };
std::cout << add(num1, num2) << std::endl;
Run Code Online (Sandbox Code Playgroud)
该代码按预期工作。add() 函数模板成功推导为
[[nodiscard]] inline double add(const std::int64_t& num1, const double& num2);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这段代码时:
template <typename Type>
requires is_number<Type>
[[nodiscard]] inline auto absolute(Type&& number) noexcept
{
return number < 0 …Run Code Online (Sandbox Code Playgroud) 我需要创建一个流程图,下面是一个可重现的示例R:
library(DiagrammeR)
library(DiagrammeRsvg)
library(magrittr)
library(rsvg)
library(tidyverse)
flowchart = grViz("digraph flowchart {
graph [rankdir = LR]
subgraph cluster_one {
peripheries=1
label = 'Procedure 1';
style = solid;
fontname = 'helvetica-bold';
node [fontname = Helvetica, shape = circle, style=solid]
R1 [label = '1']; R2 [label = '2']; R3 [label = '3']; R4 [label = '4']
node [fontname = Helvetica, shape = rectangle, style=filled]
A1 [label = 'A1']
node [fontname = Helvetica, shape = rectangle, style=filled]
A2 [label = 'A2']
node …Run Code Online (Sandbox Code Playgroud) 我在 Codeforces 上遇到一个简单的问题,问题是这样的。我想讨论的不是问题,而是我们使用的语言,在本例中是 Python3 和 Haskell。
具体来说,我的算法有两个版本,一个在 Haskell 中,另一个在 Python3 中。两者都采用函数式编程风格。代码看起来像这样
Python3
from operator import add
from itertools import accumulate
from functools import reduce
def floss(l):
def e(u):
a, b = u
return b if a % 2 == 1 else -b
return map(e, enumerate(l))
def flock(l):
return accumulate(l, add)
def search(l):
b = zip(l, l[1:])
def equal(u):
x, y = u
return x == y
c = any(map(equal, b))
return 'YES\n' if c else 'NO\n'
def main(): …Run Code Online (Sandbox Code Playgroud) 我在不同的编译器上测试了这个代码片段,但总是得到相同的结果,但我就是不明白为什么。
unsigned char buffer[0x4000] = {0};
string strText((char*)buffer, 0x4000);
cout << "strlen((char*)buffer) = " << strlen((char*)buffer) << endl;;
cout << "strText.length() = " << strText.length() << endl;
Run Code Online (Sandbox Code Playgroud)
输出是:
strlen((char*)buffer) = 0
strText.length() = 16384
Run Code Online (Sandbox Code Playgroud)
我正在std::string从unsigned char数组创建一个变量(您也可以使用有符号的字符数组,结果是相同的)。在将变量传递给字符串构造函数之前,数组内容被“清零”(根据情况使用 memset 或 C++ 数组初始化)。
如果使用 C 样式函数获取字符串长度strlen((char*)buffer),则结果如预期为“0”。
如果使用方法获取字符串对象的长度,则string::length()该值等于字符串构造函数中传递的数组大小(本例中为 16384)。为什么?
另外,作为副作用,如果使用打印字符串对象的内容,std::cout您会得到一个非常长的空字符串(所有“0”都被“空格”替换)。
我是否应该对 std::string 对象执行一些额外的操作以获得我期望的长度(0)?
谢谢
我正在尝试使用process.env云函数定义之外的值,但是undefined当我没有在云函数内部使用变量时,它就会得到。
functions/.env
OPENAI_API_KEY=MY_API_KEY
Run Code Online (Sandbox Code Playgroud)
functions/index.js
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { ChatOpenAI } = require("@langchain/openai");
console.log(process.env.OPENAI_API_KEY); // undefined
const llm = new ChatOpenAI({
openAIApiKey: process.env.OPENAI_API_KEY, // undefined
});
exports.testCall = functions.https.onCall((data, context) => {
console.log(process.env.OPENAI_API_KEY); // defined with proper value
});
Run Code Online (Sandbox Code Playgroud)
我是 firebase 和云函数的新手,所以也许有某种我不理解的范例,但我对如何在函数之外使用 env 变量感到困惑。
当我启动 firebase 模拟器时,它显示“已从 .env 加载环境变量”。然而,它仅在函数运行时可用。
这可能是“ c++ 101”级别的问题,但有一些相关的痛苦,所以我会要求评论以保持自信。
我有一些遗留代码支持返回到c++11及之前的这一行:
iTmp = ~iTmp++;
Run Code Online (Sandbox Code Playgroud)
在代码更改为c++17之前,此方法 100% 有效。更改为c++17后,它会计算出不同的值,但并非总是如此。这取决于该行在代码中的位置,是先执行 2 的补码还是先执行增量。
另外,如果您尝试强制使用括号,则会出现编译器错误:
iTmp = (~iTmp)++;
error C2105: '++' needs l-value
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义,因为 2 的补码结果不是中间变量,因此 ++ 没有任何可操作的内容。
我的研究告诉我
我的评价正确吗?
对我来说,一个非常微妙的区别是前面的代码无效,但这一行可以:
if ( ++iTmp > 0)
Run Code Online (Sandbox Code Playgroud)
我没想到升级到c++17会导致这个微妙的错误,但我不得不将代码更改为以下内容来解决问题:
iTmp = ~iTmp;
iTmp++;
Run Code Online (Sandbox Code Playgroud) 我想定义两个类A,并I以它们的对象尊重这种关系的方式:
i1 -----------a1
|------a2
|----a3
Run Code Online (Sandbox Code Playgroud)
该类的一个实例I指向该类的零个、一个或多个实例A。
类的一个实例A仅指向该类的一个实例I。
类的实例I可以没有任何类的实例A,但类的实例必须“附加”A类的实例。I
为了满足这些条件,我将这两个类声明如下:
class I;
class A
{
private:
std::string as;
std::shared_ptr<I> iA;
public:
A(std::string aTxt);
A();
~A();
};
class I
{
private:
std::string ip;
std::vector<std::unique_ptr<A>> as;
friend class A;
public:
I(std::string i);
~I();
};
Run Code Online (Sandbox Code Playgroud)
在源文件中,我以这种方式定义了这两个类:
A::A(std::string aText)
{
as = aText;
}
A::A()
{
as = "";
}
A::~A()
{
}
I::I(std::string i)
{ …Run Code Online (Sandbox Code Playgroud) c++ ×5
arrays ×1
c ×1
c# ×1
c++14 ×1
c++17 ×1
c++20 ×1
constructor ×1
diagrammer ×1
dotenv ×1
firebase ×1
function ×1
graphviz ×1
haskell ×1
javascript ×1
node.js ×1
r ×1
shared-ptr ×1
string ×1
templates ×1
unique-ptr ×1