小编Cut*_*ter的帖子

为什么EOF字符如果放在一行末尾不起作用?

我正在学习C++并试图理解为什么EOF字符(Windows上的Ctrl + Z)如果放在一行的末尾就不会破坏while循环.

我的代码:

int main() {
    char ch;
    while(cin >> ch) {
        cout << ch;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我输入^ Z时,循环中断.但是当我输入12 ^ Z时,它没有.为什么?

c++

11
推荐指数
2
解决办法
1726
查看次数

使用自定义名称创建工作簿而不将其保存到磁盘

是否可以创建具有自定义名称的工作簿而不将其保存到磁盘?我想避免使用默认的"Workbook x"名称,但我不想要求用户保存工作簿.如果我将其自动保存在一些临时状态,用户将无法获得"另存为..."对话框,如果他点击"保存",这可能会令人困惑.

excel vba excel-vba

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

部分匹配会改变Matcher的位置

使用Matcher的 find()方法时,部分匹配返回false,但匹配器的位置仍会移动.后续调用find()省略了那些部分匹配的字符.

部分匹配的示例:"[0-9]+:[0-9]"针对输入的模式"a3;9".此模式与输入的任何部分都不匹配,因此find()返回false,但子模式"[0-9]+"匹配"3".如果我们此时更改模式并find()再次调用,则不会测试新匹配项左侧的字符,包括部分匹配项.

请注意,模式"[0-9]:[0-9]"(没有量词)不会产生这种效果.

这是正常的行为吗?

示例:在第一个for循环中,第三个模式[0-9]与字符匹配"9","3"不会报告为匹配.在第二个循环中,模式[0-9]与字符匹配"3".

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        final String INPUT = "a3;9";
        String[] patterns = {"a", "[0-9]+:[0-9]", "[0-9]"};

        Matcher matcher = Pattern.compile(".*").matcher(INPUT);

        System.out.printf("Input: %s%n", INPUT);
        matcher.reset();
        for (String s: patterns)
            testPattern(matcher, s);

        System.out.println("=======================================");

        patterns = new String[] {"a", "[0-9]:[0-9]", "[0-9]"};
        matcher.reset(); …
Run Code Online (Sandbox Code Playgroud)

java regex pattern-matching

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

有没有办法在模块之间使用局部变量?

我有一个带有Module和Userform的VBA项目.我想在我的Userform中使用模块中的一些变量.

我是否有必要在全球范围内声明这些变量?我不喜欢全局变量,因为它们留在代码的执行完毕后的记忆,我有我的宏开始到这些变量一个接一个复位.我不能使用关键字End来清除内存中的变量,因为我需要记住这些变量中的一个或两个.人们通常如何做?

编辑:有没有办法将变量从Userform传递给模块而不创建全局变量?

excel vba excel-vba

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

将数组复制到过滤范围会产生不合理的结果

将过滤范围的值复制到数组似乎没有问题:然后该数组包含来自过滤和未过滤单元格的值。但是,当我将数组的内容复制回过滤范围时,结果对我来说是不可理解的。

这是我的代码:

Sub test()
    Dim rangecopy() As Variant

    rangecopy() = Range(Cells(2, 1), Cells(14, 3)).Value
    For c = LBound(rangecopy, 1) To UBound(rangecopy, 1)
        rangecopy(c, 1) = c
        rangecopy(c, 2) = c * 10
        rangecopy(c, 3) = c * 100
    Next
    Range(Cells(2, 1), Cells(14, 3)).Value = rangecopy()
End Sub
Run Code Online (Sandbox Code Playgroud)

它应该给出以下结果。在这里,当宏将数组复制到其中时,该范围未被过滤。

伊姆古尔

如果按 D 列过滤范围(“NO”被过滤掉),结果如下所示:

伊姆古尔

首先,过滤后的单元格不会更新。然后,B 列中的大多数单元格从数组的第一列获取值 (4、5、6),而其他一些单元格则从数组的第二列正确获取值 (10)。最后两行充满#N/A 错误。这应该是这样的吗?我正在使用 Office 2010。

excel vba excel-2010

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

在绘制UserForm后自动执行一些代码

我创建了一个UserForm,用户需要填写三个字段.宏尝试在UserForm_Initialize()事件中自动检测这些字段的值,然后在三个字段中显示找到的值,但用户可以更改它们.但是,自动检测需要几秒钟,并且会延迟UserForm的外观.我希望UserForm在自动检测程序之前显示其字段为空白,然后让自动检测程序自动填充字段.最好的方法是什么?使UserForm非模态使宏运行而不等待用户的输入,这是有问题的.我不想要"自动检测"按钮:这必须自动完成.

excel vba excel-vba

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

在VBA中对对象集合进行排序

我正在尝试编写一个对对象集合进行排序的函数.由于对象都是相同的类型(相同的用户定义的类),因此它们的属性集是相同的.是否有可能发现对象的属性(通过代码),以便将集合放在一个二维数组中,每一行都是一个对象,每一列都是一个属性?

另一种解决方案是将每个对象从集合中复制到对象数组,并按其属性之一对其进行排序,其属性作为字符串传递给函数.但我不知道如何使用作为字符串传递的属性名称指向对象的属性.

sorting collections excel vba excel-vba

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

VLOOKUP有两个标准?

是否存在从匹配两个或多个条件的第一行返回值的公式?例如,"从第一行返回列C,其中列A = x AND列B = y".我想在不连接A列和B列的情况下这样做.

谢谢.

excel excel-formula

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

使用类的成员函数时程序崩溃,但在main()中直接实现该函数时则不会崩溃

我试图在第9章末尾的Bjarne Stroustrup的书" Programming:Principles and Practice using C++ "中进行练习.我复制大多数代码从书只需要定义Date类的成员函数add_day(),add_month(),add_year(),和超负荷+运营商为它与工作Chrono::Date::Month枚举.

我的问题是程序编译,但在我使用Chrono::Date::add_month()函数时崩溃main().add_month()是唯一一个+Month枚举上使用重载运算符的函数.另外两个成员函数(add_day()add_year())在使用时工作正常main().当我正在add_month()完成直接操作main()(不使用该函数)时,它工作正常.

崩溃发生在Chrono.cpp的第100行,错误为"Stack Overflow":

    Date::Month& operator + (Date::Month& m, int n) {
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

Chrono.h:

#include "../../std_lib_facilities.h"

namespace Chrono {

    class Date {
    public:
        enum Month {
            jan = 1, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, …
Run Code Online (Sandbox Code Playgroud)

c++ class

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

字符串内表的内联声明会导致类型不兼容

按照此处给出的示例,我使用 VALUE 运算符来声明并填充字符串值表:

DATA tab TYPE TABLE OF STRING.
tab = VALUE #( ( 'abc' ) ( 'xyz' ) )
Run Code Online (Sandbox Code Playgroud)

SAP 给出以下错误消息:

“'abc'”和“TAB”的行类型不兼容。

然而,这有效:

DATA tab TYPE TABLE OF STRING.
tab = VALUE #( ( conv string('abc') ) ( conv string('xyz') ) )
Run Code Online (Sandbox Code Playgroud)

这是2021版本的系统。

是什么导致了这个错误?文字不应该直接被识别为字符串吗?

string abap

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