小编Ast*_*nog的帖子

如何检查字符串是否为数字?

我想检查字符串是否是带有此代码的数字.我必须检查字符串中的所有字符都是整数,但while返回的总是isDigit = 1.我不知道为什么如果不起作用.

char tmp[16];
scanf("%s", tmp);

int isDigit = 0;
int j=0;
while(j<strlen(tmp) && isDigit == 0){
  if(tmp[j] > 57 && tmp[j] < 48)
    isDigit = 0;
  else
    isDigit = 1;
  j++;
}
Run Code Online (Sandbox Code Playgroud)

c string

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

从项目文件夹内的文件加载图像

我正在尝试从文件加载图像而不使用FileChooser.文件夹是:

TestProject
-src
--application
---(all_the_classes_i'm_using.java)
-assets
--drawIcon.png
Run Code Online (Sandbox Code Playgroud)

我想在assets文件夹中加载图像.我试过了:

Image image = new Image("../assets/drawIcon.png")
Image image = new Image(getClass().getResourceAsStream("../assets/drawIcon.png"))
Run Code Online (Sandbox Code Playgroud)

我已尝试使用字符串路径"/TestProject/assets/drawIcon.png",但没有.我不明白如何加载这个图像!

java javafx

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

使用std :: move的未定义行为

从cppreference 的移动页面

除非另行指定,否则已移出的所有标准库对象都将处于有效但未指定的状态.也就是说,只有没有前置条件的函数(例如赋值运算符)才能在对象移动后安全地使用

因此,从同一页面上的示例,下面的代码被视为未定义的行为

vector<string> v_string;
string example = "example";
v_string.push_back(move(example));
cout << example << endl;
Run Code Online (Sandbox Code Playgroud)

MSVC将不会在控制台上输出任何内容,但是如果我这样做的话

vector<int> v_int;
int number = 10;
v_int.push_back(move(number));
cout << number << endl;
Run Code Online (Sandbox Code Playgroud)

将输出10.这是否有理由发生?或者它总是未定义的行为?

c++ c++11

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

paintComponent中的初始化不起作用

我正在做一些练习来理解Java和Swing API.为什么在Disegno构造函数中有nullPointerException?我想打印两个矩形的坐标,但它们似乎没有初始化.

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Disegno extends JFrame{

    Disegno(){
        this.setSize(500, 500);
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        MyPanel aba = new MyPanel();
        this.setContentPane(aba);
        this.setVisible(true);

        System.out.println(aba.rect.blue.x + "-" + aba.rect.blue.y);
        System.out.println(aba.rect.yellow.x + "-" + aba.rect.yellow.y);
    }

    public static void main(String[] args){
        new Disegno();
    }
}

class MyPanel extends JPanel{

    JPanel up, down;
    RectArea rect;

    MyPanel(){
        this.setLayout(new BorderLayout());

        up = new JPanel();
        this.add(up, BorderLayout.NORTH);
        up.setBackground(Color.red);
        up.setVisible(true);

        down = new JPanel();
        down.setBackground(Color.green);
        this.add(down, BorderLayout.SOUTH);
        down.setVisible(true);

        rect = new RectArea();
        this.add(rect, BorderLayout.CENTER);

        this.setVisible(true);
    } …
Run Code Online (Sandbox Code Playgroud)

java swing

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

LR(1) 解析表与 epsilon 产品

我无法使用包含 epsilon 产生式的语法为 LR(1) 解析器构建项目集的集合。例如,给定以下语法(其中 eps 代表 epsilon)

S -> a S U
U -> b
  |  eps
Run Code Online (Sandbox Code Playgroud)

State0 将是

S' -> .S, $
S -> .a S U, $
Run Code Online (Sandbox Code Playgroud)

从 State0 移动 'a' 将给出以下状态,我们称之为 State2

S -> a .S U, $
S -> .a S U, $/???
Run Code Online (Sandbox Code Playgroud)

为了对 State2 的第二项进行前瞻,我需要计算 FIRST(U$)。我知道 FIRST(U) = {'b', eps}。我的第一个问题是:State2 的第二项的前瞻是 $ 和 'b'?由于 U 可以是 eps,我的大脑告诉我,我也可以将 $ 作为前瞻,而不仅仅是 'b'。如果 FIRST(U) 只是 {'b'},它就只是 'b'。那是对的吗?

第二个问题:在某些时候,我会有一个状态如下

S -> a S .U, $
U -> .b, …
Run Code Online (Sandbox Code Playgroud)

parsing compiler-theory lr1

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

尾随返回类型和右值

我正在阅读Scott Meyers的Effective Modern C++,我在我的机器上尝试了他为Deducing Types章节提供的示例.

他提供这个功能:

template <typename Container, typename Index>
auto decltype_test_1(Container& c, Index i) -> decltype(c[i])
{
  return c[i];
}
Run Code Online (Sandbox Code Playgroud)

然后它以这种方式使用该功能:

std::deque<int> d;
…
decltype_test_1(d, 5) = 10; // authenticate user, return d[5],
                          // then assign 10 to it;
                          // this won't compile!
Run Code Online (Sandbox Code Playgroud)

说它不会编译.我试过MSVC,它确实编译.我写了以下内容main:

std::deque<int> d;
d.push_back(0);
d.push_back(1);
d.push_back(2);

decltype_test_1(d, 0) = 10;

for each (auto item in d)
  cout << item << endl;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它编译,最重要的是,它显示10为双端队列的第一个元素.他解释说这个代码是错误的.它为什么在这里工作?我错过了什么?

c++ decltype effective-c++ c++11

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

免费谷歌翻译

我在网上发现,我可以使用此网址从Google翻译中免费翻译

https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}

{0}原始语言在哪里,{1}是目标语言,{2}是我想要翻译的文本,我在我的C++项目中使用它.使用System::Net::WebClient DownloadString()方法我下载该URL提供给我的文件.

我想知道使用它是否存在某种限制.我可以在代码中使用此网址从Google进行翻译吗?这有什么不对吗?

谢谢

.net c++ google-translate

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

如何从变量类型推断出一个长度的数组?

我有一个数组的自定义类型,我想初始化该类型的变量.它看起来像这样:

type Registers = [u8; 16];

fn main() {
    let mut registers: Registers;
}
Run Code Online (Sandbox Code Playgroud)

我不想做类似下面的事情,因为在某些时候我可能想要更改我的数组类型的大小:

let mut registers: Registers = [0; 16];
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用类型的名称来初始化变量?我是否被迫像上面那样指定初始化?

我的问题与Rust中的Can数组长度有所不同?因为数组的大小应该从类型本身推断出来,而不是从值推断出的数组类型.

rust

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