小编Tim*_* B.的帖子

如何处理静态存储持续时间警告?

我是一个试图从书中学习C++的新手.下面的代码工作和预期产生输出,但也有定义两行警告engine和randomInt"具有静态存储时间'引擎’的初始化可能会引发无法捕获的异常."

如果我把线7和8的内部main(),警告完全消失,但随后engine并randomInt没有提供给getNumber.

我不知道如何修复警告.另外,也许更重要的是,randomInt在各个地方使用的正确方法是什么main()?声明它main()然后根据需要将它传递给函数是否合适?不知怎的main(),感觉不适合宣布这些类型的东西.

我之前问了一个与此类似的问题,但我仍然在努力理解,并提供了一个希望有用的例子.

// Loosely based on Fig. 6.12: fig06_12.cpp, C++ How To Program, Ninth Edition

#include <iostream>
#include <iomanip>
#include <random>

std::default_random_engine engine( static_cast<unsigned int>( time(nullptr) ) );
std::uniform_int_distribution<unsigned int> randomInt( 1, 6 );

int getNumber();

int main() {
    for ( unsigned int counter = 1; counter <= 10; ++counter ) {
        std::cout << std::setw( 10 ) << …
Run Code Online (Sandbox Code Playgroud)

c++ global-variables c++11

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

剥离字符串,但允许变音符号

#!/usr/bin/perl -T
use strict;
use warnings;
use utf8;
my $s = shift || die;
$s =~ s/[^A-Za-z ]//g;
print "$s\n";
exit;

> ./poc.pl "El Guapö"
El Guap
Run Code Online (Sandbox Code Playgroud)

有没有办法修改这个Perl代码,以便不删除各种变音符号和字符重音?谢谢!

regex perl diacritics

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

如何修复隐式转换警告?

我正在阅读《C++ 如何编程》第 9 版,尝试学习 C++,并尝试使用第 7 章中的骑士问题进行练习。

根据输出中的“64”,代码显然存在某种逻辑错误(我将自行修复),但在执行此操作之前,我一直致力于理解以及如何处理编译器警告。

我已将 board 声明为 unsigned int 的二维数组,因为它只能包含值 0-7。同样,出于同样的原因,我将 for 循环中的变量声明为 unsigned int。

我在 stackoverflow 上读过有关此问题的回复,但它们很快就超出了我的理解范围。

#include <iostream>
#include <array>
#include <iomanip>

using namespace std;

void printArray(const array< array< unsigned int, 8 >, 8 >);

int main() {
  array< array< unsigned int, 8 >, 8 > board = {};
  array< int, 8 > horizontal = {{ 2, 1, -1, -2, -2, -1, 1, 2 }};
  array< int, 8 > vertical = {{ -1, -2, …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned signed implicit-conversion c++11

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