小编Jam*_*lls的帖子

"错误:在'a'中请求成员'大小',这是指针类型"但我不认为它是指针

所以,我以为我是想做一些简单的事,但显然不是......

我写了这个函数,所以我可以稍后扩展它,并有一个快速的方法,在需要时给用户一个菜单menu(mystrings):

int menu(string a[]) {
    int choice(0);
    cout << "Make a selection" << endl;
    for(int i=0; i<a.size(); i++) {
        cout << i << ") " << a[i] << endl;
    }
    cin >> choice;
    cout << endl;
    return choice;
}
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,我得到:

main.cpp: In function ‘int menu(std::string*)’:
main.cpp:38:12: error: request for member ‘size’ in ‘a’, which is of pointer type ‘std::string* {aka std::basic_string<char>*}’ (maybe you meant to use ‘->’ ?)
  int n = a.size();
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时.可以有人为我翻译这个错误并解释是什么->,谢谢.

c++ arrays

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

当Chrome的样式检查器中的类样式变灰时,这意味着什么?

为什么以下类(.productQuote)在检查器中显示为灰色?我无法编辑它.

Chrome中显示类的图像显示为灰色

google-chrome-devtools

7
推荐指数
1
解决办法
1779
查看次数

尝试使用 Newtonsoft 将对象序列化为流,得到一个空流

我有一个程序的例子:

using System;
using Newtonsoft.Json;
using System.IO;

public class Program
{
    public static void Main()
    {
        using (var stream = new MemoryStream())
        using (var reader = new StreamReader(stream))
        using (var writer = new StreamWriter(stream))
        using (var jsonWriter = new JsonTextWriter(writer))
        {
            new JsonSerializer().Serialize(jsonWriter, new { name = "Jamie" });
            Console.WriteLine("stream length: " + stream.Length); // stream length: 0
            Console.WriteLine("stream position: " + stream.Position); // stream position: 0
            Console.WriteLine("stream contents: (" + reader.ReadToEnd() + ")"); // stream contents: ()
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# serialization stream json.net

7
推荐指数
1
解决办法
1975
查看次数

从字符串或流上传文件到FTP服务器

我正在尝试在FTP服务器上创建一个文件,但我所拥有的只是一个字符串或数据流以及应该用它创建的文件名.有没有办法在流或字符串上创建服务器上的文件(我没有创建本地文件的权限)?

string location = "ftp://xxx.xxx.xxx.xxx:21/TestLocation/Test.csv";

WebRequest ftpRequest = WebRequest.Create(location);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpRequest.Credentials = new NetworkCredential(userName, password);

string data = csv.getData();
MemoryStream stream = csv.getStream();

//Magic

using (var response = (FtpWebResponse)ftpRequest.GetResponse()) { }
Run Code Online (Sandbox Code Playgroud)

.net c# ftp webrequest ftpwebrequest

6
推荐指数
1
解决办法
9861
查看次数

Matplotlib plt.show()未显示图形

我的绘图代码似乎没有显示图形(第12到第59行可能没有打破它,但我包括它们以防万一 - 我有一些数据需要一段时间才能放入排序列表).

我与它周围的混乱和尝试不同的东西,但我认为主要的问题是,我不明白是什么figure(),plt.show(),import matplotlib.pyplot as plt, from pylab import *和其他一些线路的实际含义.我不知道什么时候需要使用它们或者为什么我需要使用它们.

有人可以帮助我并解释如何绘制两个列表的.svg并在最后显示有关为什么每行都包含在内的详细信息以及当我放在plt.前面时以及当我放在ax.前面时以及当我没有放任何东西时在前面等?对不起,这需要很长时间才能回答,但我真的不明白matplotlib或他们网站上的任何例子.

import matplotlib
matplotlib.use('SVG')
import matplotlib.pyplot as plt
import string, math
from pylab import *
from decimal import *

name = raw_input("Enter the filename:\n")

myfile = open("datafiles/"+name+".data", 'r')

xData = []
yData = []
plots = [name]
mydata = myfile.readlines()

i = 0
N = len(mydata)
while (i < N):
    string = mydata[i]
    data = [str(x) for x …
Run Code Online (Sandbox Code Playgroud)

python graph matplotlib

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

为什么在重新启动服务之前我的 Windows 服务不记录

tl;博士

我已经使用TopShelf创建了一个Windows 服务,使用Log4Net添加了日志记录,然后构建了项目,安装了服务并启动了服务。然后我的服务运行良好,但没有记录。该TopShelf日志出现,但不是我的日志添加到我的Windows服务。更奇怪的是,如果我重新启动Windows Service,日志记录开始工作。

我已经创建了一个小项目的GitHub 存储库,如果你想克隆它并自己重现问题,它会重现这个问题。


如何判断它是否有效

该服务应创建两个文件,一个只显示“Hello World”,另一个包含所有日志。如果日志文件成功记录了该行,它将起作用:Why is this line not logged?

如果该行没有出现在log.txt文件中,那么我的问题没有解决。

注意:如果您单击Visual Studio 中的开始按钮,则会显示此行,但我希望它在安装服务并启动服务时工作。如果服务启动,然后重新启动,它也可以工作,但这似乎更像是一个黑客而不是修复。


项目描述

这就是我设置服务的方式。我使用.Net Framework 4.6.1创建了一个新的C# 控制台应用程序并安装了 3 个NuGet包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="log4net" version="2.0.8" targetFramework="net461" />
  <package id="Topshelf" version="4.0.4" targetFramework="net461" />
  <package id="Topshelf.Log4Net" version="4.0.4" targetFramework="net461" />
</packages>
Run Code Online (Sandbox Code Playgroud)

然后我创建了Windows 服务

using log4net.Config;
using System.IO;
using Topshelf;
using …
Run Code Online (Sandbox Code Playgroud)

c# log4net windows-services topshelf

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

“HttpClientHandler”不包含 net461 和 net47 中“ClientCertificates”的定义?

我正在制作一个 NuGet 包,我的 csproj 如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
    ...
    <PackageId>Package2</PackageId>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Package1\Package1.csproj" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
    <Reference Include="System.Net.Http" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

它引用的项目如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;netstandard1.6;net461;net47</TargetFrameworks>
    <PackageId>Package1</PackageId>
    ...
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <NoWarn>1701;1702; CS1591</NoWarn>
  </PropertyGroup>

  <ItemGroup Condition="'$(TargetFramework)'=='netstandard1.6' OR '$(TargetFramework)'=='net461'">
      <PackageReference Include="System.ValueTuple" Version="4.5.0" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)'=='net461' OR '$(TargetFramework)'=='net47'">
    <Reference Include="System.Net.Http" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

Package2项目内部有以下行:

webRequestHandler.ClientCertificates.Add(certificate);
Run Code Online (Sandbox Code Playgroud)

但它不是构建在net461or中net47,而是说: …

.net c# dependencies multitargeting

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

在MathJax中显示长除法符号的方法)~~~~~~

有没有办法在MathJax中格式化长除法,所以它看起来像这样:

     125     (Explanations)
   4)500
     4        (4 ×  1 = 4)
     10       (5 -  4 = 1)
      8       (4 ×  2 = 8)
      20      (10 -  8 = 2)
      20      (4 ×  5 = 20)
       0      (20 - 20 = 0)
Run Code Online (Sandbox Code Playgroud)

但显然格式正确?

latex mathjax

4
推荐指数
2
解决办法
7548
查看次数

当调用模拟方法时,是否可以使用 Moq 调用异步回调?

我正在使用 Moq 模拟一些实现,我想验证在此接口上是否正确调用了一个方法,问题是它看起来像这样:

public interface IToBeMocked {
    void DoThing(IParameter parameter);
}

public interface IParameter {
    Task<string> Content { get; }
}
Run Code Online (Sandbox Code Playgroud)

所以我设置了我的模拟:

var parameter = "ABC";
var mock = new Mock<IToBeMocked>();
mock
    .Setup(m => m.DoThing(It.IsAny<IParameter>()))
    .Callback<IParameter>(p async => (await p.Content).Should().Be(parameter));

new Processor(mock.Object).Process(parameter);

mock
    .Verify(m => m.DoThing(It.IsAny<IParameter>()), Times.Once);
Run Code Online (Sandbox Code Playgroud)

不幸的是,该测试已经通过以下实现:

public class Processor {
    public Processor(IToBeMocked toBeMocked){
        _toBeMocked = toBeMocked;
    }

    public void Process(string parameter){
        _toBeMocked.DoThing(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

因为回调是异步的,但签名需要一个操作,这意味着永远不会等待等待者,并且测试在引发异常之前结束。

Moq 中是否有等待异步回调的功能?

编辑

似乎有些混乱。我希望这能澄清问题。

我正在做TDD。我已经实现了最简单的代码外壳来编译测试。然后我编写了测试以确保“ABC”是结果,Task并且我已将测试设置为运行。正在过去。这就是问题所在。我希望测试失败,这样我就可以实现“真正的”实现。

编辑2

我越想越觉得这可能是不可能的。我已经为仓库提出了一个问题: https: //github.com/moq/moq4/issues/737 …

c# tdd moq

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

如何拥有两个键的地图?C++

#include <iostream>
#include <map>
#include <string>
#include <vector>

int main() {

    std::map<std::pair<int, int>, std::string> mymap;
    for(int i = 0; i < 10; i = i + 2) {
        std::pair<int, int> temp;
        temp.first = i;
        temp.second = i+1;
        std::string temp2;
        std::cout << "Enter a string: ";
        std::cin >> temp2;
        mymap[temp] = temp2;
    }

    while(1) {
        int temp, temp2;
        std::cout << "Enter a number: ";
        std::cin >> temp;
        std::cout << "Enter another number: ";
        std::cin >> temp2;

        std::pair<int, int> test;
        test.first = …
Run Code Online (Sandbox Code Playgroud)

c++ map std-pair

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