小编bar*_*nos的帖子

在 C++ 中将字符串转换为数字

我在 C++ 中看到了很多将字符串转换为数字的选项。

其中一些实际上建议使用标准 C 函数,例如atoiatof

我还没有看到有人建议使用以下选项,该选项仅依赖于 C++ STL:

int Str2Num(const string& str) // can be called with a 'char*' argument as well
{
    int num;
    istringstream(str)>>num;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

或者更一般地说:

template <typename type>
type Str2Num(const string& str) // can be called with a 'char*' argument as well
{
    type num;
    istringstream(str)>>num;
    return num;
}
Run Code Online (Sandbox Code Playgroud)

上述实现有哪些缺点?

有没有更简单/更干净的方法来实现这种转换?

c++ stl string-conversion

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

Python:如何访问YouTube网页?

我正在使用'webbrowser'模块打开YouTube网页:

controller = webbrowser.get()
controller.open("http://www.youtube.com/watch?v=SMwZsFKIXa8&amp;feature=fvst")
Run Code Online (Sandbox Code Playgroud)

视频开始播放,我希望我的Python应用程序在视频结束或浏览器关闭后立即恢复.

现在,我不能用time.sleep它,因为它会迫使我等到歌曲结束(如果我"快进"视频,或者我只是关闭浏览器,应用程序将不会继续).

所以我基本上需要从网页上获得一些关于视频状态的指示,以及网页突然关闭时的另一个指示.

我可以使用我创建的手柄webbrowser.get,为了做到这一点吗?

谢谢

python browser

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

在代码中查找可变长度数组

当我的输入大小足够大时,分段错误萌芽,在项目中使用可变长度数组.我想删除它们,如何让GCC显示它找到的可变长度数组的每个声明?

我已经尝试过使用-Wstack-usage=1000和过滤消息warning: stack usage might be unbounded,但这给了我功能,而不是声明.有没有更好的办法?

c gcc gcc-warning variable-length-array

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

VS编译警告:32位移位的结果隐式转换为64位

Visual Studio 2013在以下方面发出烦人的(且似乎不相关的)编译警告:

#include <stdint.h>

#define PRECISION 16

uint64_t hi = 0;
for (uint8_t i = 0; i < PRECISION; i++)
{
    if (some_condition)
    {
        hi += 1 << (PRECISION - 1 - i);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是编译警告:

warning C4334: '<<' :
result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
Run Code Online (Sandbox Code Playgroud)

这似乎改变时要解决1 << (PRECISION - 1 - i)1 << (PRECISION - 1)

所以我一直在试图找出可能出问题的地方1 << (PRECISION - 1 - i)

显然,如果为i …

c++ bit-shift compiler-warnings visual-studio

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

Python:全局对象销毁

我有一个全局实例,__del__当Python解释器退出时,我希望它被销毁(函数调用).我是否期望过多的Python解释器?我测试它的方法是在__del__函数中放置一个打印,从命令行运行python.exe,然后按Ctrl/Break.此时,我希望在命令行窗口中看到打印.但是,我没有.

python

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

从Java中的静态方法返回内部类的实例

以下是我无法更改的用户要求:

  1. 具有静态接口的类(所有方法都是静态的).

  2. 一种特定方法返回一个ArrayList<String>对象和一个File对象.

以下是我对上述要求的实施:

  1. 包含ArrayList<String>对象和File对象的内部类.

  2. 特定方法初始化内部类的实例并在结尾返回它.

但是我无法在不创建外部类的实例的情况下创建内部类的实例:

public class Outer
{
    public class Inner
    {
        ArrayList<String> strings;
        File              file;
    }

    public static Inner method()
    {
        Inner inner = new Outer().new Inner();
        ...
        return inner;
    }
}
Run Code Online (Sandbox Code Playgroud)

除了"丑陋"之外,new Outer().new Inner()感觉还不错.

我可以采取不同的方法来避免必须实例化外部类吗?

java

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

计算有序集合中给定数字的索引

不确定这个问题是否应该在Math-Overflow或这里,所以首先尝试这里:

假设我们给出一个N 1和M 0的数字.

存在(M + N)!/(M!*N!)个不同的这样的数字,可以在可数集合中进行排序.

例如,具有2个1和3个零的所有数字的有序集合是:

  • 0 00011
  • 1 00101
  • 2 00110
  • 3 01001
  • 4 01010
  • 5 01100
  • 6 10001
  • 7 10010
  • 8 10100
  • 9 11000

我们如何有效地计算相应集合中给定数字的索引?

注意:此问题的输入只是数字,而不是整个(相应)集合.

algorithm combinatorics

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

当CHAR_BIT> 8时,语言标准如何定义uint8_t?

我手边没有任何平台CHAR_BIT > 8.

所以我在文件中更改了相关的预处理器定义limits.h:

#define CHAR_BIT      16          /* number of bits in a char */
#define SCHAR_MIN   (-32768)      /* minimum signed char value */
#define SCHAR_MAX     32767       /* maximum signed char value */
#define UCHAR_MAX     0xffff      /* maximum unsigned char value */
Run Code Online (Sandbox Code Playgroud)

然后,当包含文件时stdint.h,我希望看到它uint8_t不再是一个可行的类型.

但确实如此.

语言标准如何解决这个问题?

c

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

Pythonic方式计算尾随零的数量

我正在寻找一种Pythonic方法来计算正整数的二进制表示中的尾随零的数量n(这将表示其中最高功率2除以n没有余数).

简单的解决方案:

def CountZeros(n):
    c = 0
    while (n % 2) == 0:
        n /= 2
        c += 1
    return c
Run Code Online (Sandbox Code Playgroud)

但为了以更加Pythonic的方式做到这一点,我认为我可以利用:

  • bin(n)[2:],给出二进制表示 n
  • bin(n)[:1:-1],它给出了反向二进制表示 n

所以我的问题可以简化为计算字符串中尾随零的数量.

有没有单一陈述方式来做到这一点?

我的最终目标是用于计算最高功率的Pythonic方法,2其中n没有余数,所以任何方法不是通过计算字符串中的尾随零来实现这一点也是值得赞赏的.

python

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

代码不会编译

我正在使用Microsoft Visual Studio Express 2013并编写了以下代码

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

1智能感知:PCH警告:找不到合适的标头停止位置.未生成IntelliSense PCH文件.

2 IntelliSense:预期声明错误3错误C1010:查找预编译头时意外结束文件.你忘了在你的来源添加'#include"stdafx.h"'吗?

我已经尝试添加'#include"stdafx.h"但这没什么区别.我已经预编译了标题,如果我取消它,我会在尝试构建时收到以下消息.

'ConsoleApplication6.exe' (Win32): Loaded 'C:\Users\Justin\Desktop\ConsoleApplication6\Debug\ConsoleApplication6.exe'. Symbols loaded.
'ConsoleApplication6.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'ConsoleApplication6.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'ConsoleApplication6.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'ConsoleApplication6.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Cannot find or open the PDB file.
'ConsoleApplication6.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. …
Run Code Online (Sandbox Code Playgroud)

c++

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