小编Fan*_*Fox的帖子

如何将cin和cout重定向到文件?

我怎样才能重定向cinin.txtcoutout.txt

c++

125
推荐指数
5
解决办法
16万
查看次数

循环遍历matlab中的文件夹中的文件

我有一天的日志文件,我需要在matlab中解析和查看.

日志文件如下所示:

LOG_20120509_120002_002.csv
(year)(month)(day)_(hour)(minute)(second)_(log part number)
Run Code Online (Sandbox Code Playgroud)

日志每小时递增一次,但有时秒数是一秒或两秒(每小时),这意味着我需要忽略他们所说的事情loadcsv.

我还有另一个文件:

LOG_DATA_20120509_120002.csv
Run Code Online (Sandbox Code Playgroud)

其中包含整个小时的数据(不同的数据).

总体目标是:

 loop through each day 
     loop through each hour
         read in LOG_DATA for whole hour
         loop through each segment
             read in LOG for each segment
                 compile a table of all the data
Run Code Online (Sandbox Code Playgroud)

我想问题是,如果它们不同,我如何忽略当天的会议记录?我怀疑它将循环遍历文件夹中的所有文件,在这种情况下我该怎么做?

csv file-io matlab loops

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

C++ 11清除shared_ptr时,我应该使用reset还是设置为nullptr?

我有一个关于C++ 11最佳实践的问题.清除shared_ptr时,我应该使用reset()没有参数的函数,还是应该设置shared_ptrnullptr?例如:

std::shared_ptr<std::string> foo(new std::string("foo"));
foo.reset();
foo = nullptr;
Run Code Online (Sandbox Code Playgroud)

是否存在任何真正的差异,或者两种方法都存在优势/劣势?

c++ reset shared-ptr nullptr c++11

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

Ping网络,窗口中的所有地址

是否可以在Windows cmd行中检查所有网络地址(使用ping或类似地址)以查看哪些网络地址/具有活动设备:

即.做类似以下事情的东西:

for i = 0 to 255
    ping 192.168.1.i //Print this
end
Run Code Online (Sandbox Code Playgroud)

这显然是伪代码.我想知道是否有可能在Windows cmd中做这样的事情.如果您不需要批处理文件会很棒,但我知道这是不可能的.

PS.另外请提一下是否有程序要做,但在cmd中这样做会很好.

windows cmd batch-file

50
推荐指数
5
解决办法
28万
查看次数

C到C++表内联定义

我在C中的代码编译和正常工作,我想在C++中使用类似的代码:

static const char* aTable[12] = {
    [4]="seems",
    [6]=" it  ",
[8]="works",};

int main(){
    printf("%s%s%s", aTable[4],aTable[6],aTable[8]); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我把它放在一个.c文件中,并编译gcc它的工作原理.但是,如果我把它放在一个.cpp文件中并用它编译g++,我会得到以下错误:

test_cpp.cpp:5:3: error: expected identifier before numeric constant
test_cpp.cpp:5:4: error: type '<lambda>' with no linkage used to declare function 'void<lambda>::operator()() const' with linkage [-fpermissive] 
test_cpp.cpp: In lambda function: test_cpp.cpp:5:5: error: expected '{' before '=' token 
test_cpp.cpp: At global scope: test_cpp.cpp:5:5: warning: lambda expressions only available with
    -std=c++0x or -std=gnu++0x [enabled by default] 
test_cpp.cpp:5:6: …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc g++

41
推荐指数
4
解决办法
2688
查看次数

使用std :: vector初始化Eigen :: vector

我之前已经看过它,但我不记得如何有效地初始化具有相同长度Eigen::Vector的已知std::vector长度.这是一个很好的例子:

std::vector<double> v1 = {1.0, 2.0, 3.0};

Eigen::Vector3d v2; // Do I put it like this in here: v2(v1) ?
v2 << v1[0], v1[1], v1[2]; // I know you can do it like this but 
                           // I am sure i have seen a one liner.
Run Code Online (Sandbox Code Playgroud)

我已经仔细阅读了有关高级矩阵初始化的这一页,但没有明确解释执行此操作的方法.

c++ eigen

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

如何使用cmake设置GDB调试标志?

我已经尝试使用.设置调试标志

set
Run Code Online (Sandbox Code Playgroud)

命令,cmake但我不确定要添加什么.我被告知的事情,DEBUG=true但到目前为止,我无法找到正确的标志设置.

c++ cmake

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

在c ++代码中处理Angle Wrap

有没有办法安全,只需用最少数量的case语句来处理角度换行.

当使用角度的特定表示(0-360度或-180-180度(或等效弧度))并且包裹角度时,会发生角度换行.例如,假设您的角度为-170,则减去50度.你在数学上加起来-220但实际上应该是+140度.

显然你可以使用以下方法检查:

if (deg < -180) { 180 - abs(deg + 180); }
Run Code Online (Sandbox Code Playgroud)

或类似的.但首先你需要进行大量的检查,其次如果你换了两次就不行.

这种情况普遍存在的第二种情况是两个角度之间的插值.

例如,假设我的角度为-170度和160度,我想要它们之间的中间位置.一种常见的方法是,ang1 + 0.5(ang2-ang1)但是在我提供的示例中,当它应该是175时,将导致角度为-5度.

在这些情况下,是否有一种常用的方法来处理角度换行?

c++ math

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

如何测试stringstream operator >>是否解析了错误类型并跳过它

我有兴趣讨论用于stringstream解析具有多种类型的行的方法.我将从查看以下行开始:

"2.832 1.3067 nana 1.678"
Run Code Online (Sandbox Code Playgroud)

现在让我们假设我有一个有多个strings和的长行doubles.解决这个问题的显而易见的方法是将字符串标记化,然后检查转换每个字符串.我有兴趣跳过第二步,stringstream直接使用只找到数字.

我认为解决这个问题的好方法是读取字符串并检查是否failbit已设置,如果我尝试将字符串解析为double,它将会是这样.

说我有以下代码:

string a("2.832 1.3067 nana 1.678");

 stringstream parser;
 parser.str(a);

 for (int i = 0; i < 4; ++i)
 {
     double b;
     parser >> b;
     if (parser.fail())
     {
         std::cout << "Failed!" << std::endl;
         parser.clear();
     }
     std::cout << b << std::endl;
 }
Run Code Online (Sandbox Code Playgroud)

它将打印出以下内容:

2.832
1.3067
Failed!
0
Failed!
0
Run Code Online (Sandbox Code Playgroud)

我没有惊讶它没有解析一个字符串,但内部发生了什么,以至于它无法清除它failbit并解析下一个数字?

c++ stringstream

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

根据另一个数组的搜索查找数组中元素的索引

想象一下,我有两个数组:

a = [1, 2, 5, 7, 6, 9, 8, 3, 4, 7, 0];

b = [5, 9, 6];
Run Code Online (Sandbox Code Playgroud)

我想在a(只有第一个命中)中找到b值的索引,即:

c = [3, 6, 5];
Run Code Online (Sandbox Code Playgroud)

有没有一个简单的Matlab原生方式来做这个没有循环和搜索.

我试过用find():

find(a == b)
Run Code Online (Sandbox Code Playgroud)

如果你这样做会有效:

for i = 1:length(b)
    index = find(a == b(i));
    c = [c, index(1)]
end
Run Code Online (Sandbox Code Playgroud)

但是它比这更容易理想.

arrays search matlab matrix find

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

标签 统计

c++ ×7

matlab ×2

arrays ×1

batch-file ×1

c ×1

c++11 ×1

cmake ×1

cmd ×1

csv ×1

eigen ×1

file-io ×1

find ×1

g++ ×1

gcc ×1

loops ×1

math ×1

matrix ×1

nullptr ×1

reset ×1

search ×1

shared-ptr ×1

stringstream ×1

windows ×1