所以,我以为我是想做一些简单的事,但显然不是......
我写了这个函数,所以我可以稍后扩展它,并有一个快速的方法,在需要时给用户一个菜单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)
当我尝试编译时.可以有人为我翻译这个错误并解释是什么->,谢谢.
我有一个程序的例子:
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) 我正在尝试在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) 我的绘图代码似乎没有显示图形(第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) 我已经使用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) 我正在制作一个 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,而是说: …
有没有办法在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)
但显然格式正确?
我正在使用 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并且我已将测试设置为运行。正在过去。这就是问题所在。我希望测试失败,这样我就可以实现“真正的”实现。
我越想越觉得这可能是不可能的。我已经为仓库提出了一个问题: https: //github.com/moq/moq4/issues/737 …
#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)