小编B.K*_*.K.的帖子

读取由空格分隔的未知数量的整数到每行一个向量

我文件的每一行都包含一个未知数量的整数,这些整数用空格分隔.我想在每一行中读取这些整数的向量.

以下是此类文件的示例:

11 3 0 1
4 5 0 3
2 3 4 1
23 4 25 15 11
0 2 6 7 10
5 6 2
1
11
Run Code Online (Sandbox Code Playgroud)

我已经能够使用以下方法成功读取少量数据(请注意,outer_layers是包含我试图填充的这些向量的向量):

for (int i = 0; i < outer_layers.size(); i++)
{
    while (in >> temp_num)
    {
        outer_layers[i].inner_layer.push_back(temp_num);
        if (in.peek() == '\n')
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试读取大量数据时,有时它会在一个向量下读取两行.在其中一个文件中,在24行中,它有两次读取两行,因此最后两个向量没有任何数据.

我无法绕过它.我有什么想法我做错了吗?

编辑:我在麻烦制造者文件的一些行中注意到的一些有趣的事情是这样的:

比方说有三行.

23 42 1 5
1 0 5 10
2 3 11
Run Code Online (Sandbox Code Playgroud)

第1行读入就好了23 42 1 5; 然而,第2行和第3行一起读取1 0 5 10 …

c++ vector readfile

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

MVVM共享属性

在SO上有一些类似的问题,但它们并不是一样的安静,所以我发布了这个问题.我是MVVM的新手,所以我试图找出如何创建一个可以保存可以在视图之间共享的属性的类.因此,如果我在一个视图中设置了一个属性,那么所有其他视图会在其更改后得到通知,并相应地调整其属性.

我现在拥有的是相当粗糙的,绝对不是我想要使用的东西.这是我的常用类,它将包含所有属性:

public static class Common
{
    private static string _title;
    public static string Title
    {
        get { return _title; }
        set
        {
            if (_title == value)
            {
                return;
            }

            _title = value;
            OnPropertyChanged("Title");
        }
    }

    public static void Load()
    {
        // set properties here
    }

    public static event PropertyChangedEventHandler PropertyChanged;

    private static void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(typeof(SettingsWorker), new PropertyChangedEventArgs(name));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...我必须从每个ViewModel订阅它:

Common.PropertyChanged += Common_PropertyChanged;

private void Common_PropertyChanged(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# wpf static static-members mvvm

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

将二维数组赋值表示为指针数学?

我有一个数组ex:

int array[3][5];
Run Code Online (Sandbox Code Playgroud)

如果我想为该数组中的元素赋值,那很简单...... ex:

array[1][2] = 8;
Run Code Online (Sandbox Code Playgroud)

但是,我想在指针数学中表示它,这是正确的吗?

**(array + 5 * 1 + 2) = 8;
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,它都在寻找第7位......我只是不确定我是否需要在(代码)之外包含第2个*

**(code)
Run Code Online (Sandbox Code Playgroud)

编辑:只是一点跟进.感谢所有帮助我的人.我从教师笔记中的错误中得出的混乱,在我提供你提供的信息后,他意识到错误并同意

*(*(array+row)+col) 
Run Code Online (Sandbox Code Playgroud)

要么

*(*array+MAX_COL*row+col) 
Run Code Online (Sandbox Code Playgroud)

是二维数组的精确指针数学表示.

**(array+MAX_COL*row+col)array[MAX_COL*row+col],这是在一维阵列执行多维阵列的使用,就像詹姆斯观世在答复这篇文章的一个所述(第二个比第一个快).

c c++ arrays pointers

0
推荐指数
1
解决办法
3816
查看次数

比float或double更准确的数据类型?C++

C++是否具有比float或double更准确的数据类型,或者我是否必须满足于我的计算将被关闭的事实?

编辑:正如李斯特先生指出的那样,我的问题是精确度.当你将两个浮点数/双打一起添加时,这个数字有点令人沮丧,与手工完成的计算相比,这个数字减少了一半.

c++ floating-point decimal floating-accuracy

0
推荐指数
1
解决办法
4779
查看次数

如何为我的 Java 项目创建交互式 I/O GUI?

好的,所以我已经到了开始编写实际实用的代码的地步,并减少了我的大量工作负载。但是,我如何将它打包成一个用户友好的自包含界面供人们使用,同时还提供用户输入的选项并产生输出?我不能很好地告诉人们下载 Eclipse 并编译/运行代码。那么,组装实际应用程序的下一步是什么?

java user-interface

0
推荐指数
1
解决办法
5534
查看次数

将一个整数范围映射到另一个整数范围

假设我有一组从0到 的数字255,我希望能够将该范围映射到 到 的较小数字063以便较小集合中的每个值代表较大集合中的四个值。我在标准 C# 中找不到任何可以让我做到这一点的东西。

如果我提前知道所有值,我可以通过将输入除以 4 来手动执行此操作,即:

int input = 127;
int pInput = 127 / 4; // 31
Run Code Online (Sandbox Code Playgroud)

该方法的主要问题是它对我来说并不完全可用,因为我的数字集的范围会有所不同。我可以将较大的集合除以较小的集合以获得除数值,该值将放置在以下位置4

int divisor = lSet.Count / sSet.Count;  // 256 / 64 = 4
int pInput = input / divisor;           // 127 / 4 = 31
Run Code Online (Sandbox Code Playgroud)

...但这不是一个完全准确的方法,考虑到我正在处理整数值并且除数并不总是准确的。

有没有人处理过类似的事情或有可能的解决方案?

编辑:

0为了澄清这里的目标,假设您有through的一系列输入255,但只能处理0through的数字63。我想映射这两个范围,以便较大集合中的任何输入映射到较低集合中的特定值。请注意,可以有不同的集合,我使用的只是作为示例。

可以有一组0through136和一组0through 25。上面的公式无法正确映射两者,因为除数为 ,5的最高值136 …

c#

0
推荐指数
1
解决办法
3208
查看次数

X和Y的通用约束

可以使用泛型约束来对抽象类的类型派生实施约束,但只能使用实现接口的约束吗?

例:

abstract class Dependency
{
    public abstract void IMustDoThis();
}

interface IOptionalDependency
{
    void IMightDoThis();
}

sealed class AlmightyDependency : Dependency, IOptionalDependency
{
    // I have sealed this for a reason!

    public override void IMustDoThis()
    {
        // I am almighty because I do this!
    }

    public void IMightDoThis()
    {
        // I am almighty because I can do this too!
    }
}

class ThisIsntTheAnswer : AlmightyDependency
{
    // AlmightyDependency is sealed...this is not the answer I'm looking for!
}

static …
Run Code Online (Sandbox Code Playgroud)

.net c# generics type-constraints

0
推荐指数
1
解决办法
183
查看次数

重命名已关闭的文件

当我关闭C#窗口时,我希望将时间戳附加到文件名.但是,当我运行以下代码时,我收到了这样的错误:

的 'System.NotSupportedException'

"不支持给定路径的格式."

有没有修改参数的方法?

private void Window_Closed(object sender, EventArgs e)
{
    sw_bea.Close();
    String file_Time = DateTime.Now.ToString("h:mm:ss tt").ToString();
    System.IO.File.Move(@"C:\Users\abc\Desktop\tmp_bea.txt", @"C:\Users\abc\Desktop\tmp_bea"+file_Time+".txt");
}
Run Code Online (Sandbox Code Playgroud)

.net c#

0
推荐指数
1
解决办法
67
查看次数

如何使我的 WPF 应用程序在运行 Windows 操作系统时运行 c#

我有需要在 Windows 操作系统启动时工作的应用程序。当 Windows 操作系统像 Skype 一样运行时,是否可以让我的 WPF 应用程序运行。我使用 .NET Framework 4.5.2。

对于我的应用程序信息,只需要制作二维码并使用标签打印机打印。拥有一些用户界面并不重要。

.net c# windows wpf

-1
推荐指数
1
解决办法
605
查看次数

无法摆脱do {} while(); 循环(C++)

由于一些奇怪的原因,我无法摆脱那个要求输入答案的循环,任何帮助都会很棒:

#include <iostream>
using namespace std;

int main(){
    const int TEST=20;
    char crctAnswrs[TEST]={'B', 'D', 'A', 'A', 'C',
                           'A', 'B', 'A', 'C', 'D',
                           'B', 'C', 'D', 'A', 'D',
                           'C', 'C', 'B', 'D', 'A'};
    char stdntAnswer[TEST];

    for(int index=0; index<TEST; index++){
        do{
            cout<<"Please enter the answer for question #"<<(index+1)<<": ";
            cin.ignore();
            char input;
            cin.get(input);
            stdntAnswer[index]=input;
            if(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
               stdntAnswer[index]!='C' && stdntAnswer[index]!='D'){
                cout<<"Please enter A, B, C, or D as an answer."<<endl;
            }
        }while(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
               stdntAnswer[index]!='C' && stdntAnswer[index]!='D');
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:更改了条件,我为这个例子输错了.现在每个条件都有!=问题是一样的,它不能突破循环.我认为如果其中一个条件为假,那么整个条件设置为false,从而导致它突然退出循环......但是,如果我输入A,B,它仍然会循环并且仍会显示验证消息,C或D …

c++ loops

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