Преобразовать CString в символьный массив?

Сначала я неправильно понял вопрос, и я думаю, что подход @ Уве - это путь. В своем первом ответе я использовал data.table, чтобы идентифицировать группы (и сколько строк в группе) последовательных дат на id, очевидно, не то, что вы ищете.

Вот также короткий фрагмент sqldf, дополняющий подход @ Uwe (хотя и не такой адекватный, так как здесь порядок строк не сохраняется - это потребует некоторой дополнительной обработки):

library(sqldf)

df <- sqldf('SELECT id, start, end, COUNT(*) as overlappingRows FROM (SELECT df.* FROM df 
            LEFT OUTER JOIN df AS df2 
            ON df.id = df2.id AND df.start <= df2.end AND df.end >= df2.start) as origdf 
            GROUP BY id, start, end')

Вывод:

       id      start        end overlappingRows
1   27677 2018-03-01 2018-05-29               2
2   27677 2018-04-12 2018-04-26               2
3   74744 2016-10-03 2016-11-05               1
4  111111 2018-01-01 2018-01-31               1
5  111111 2018-11-11 2018-12-31               1
6  174095 2018-12-01 2018-12-20               2
7  174095 2018-12-19 2018-12-31               2
8  210610 2018-04-13 2018-09-27               1
9  227156 2018-12-19 2018-12-31               1
10 303693 2017-02-20 2017-04-09               1
11 370474 2017-07-13 2017-08-19               1
7
задан sharptooth 24 April 2009 в 14:24
поделиться

2 ответа

You can use GetBuffer function to get the character buffer from CString.

3
ответ дан 6 December 2019 в 11:52
поделиться

You use CString::GetBuffer() to get the TCHAR[] - the pointer to the buffer. If you compiled without UNICODE defined that's enough - TCHAR is same as char, otherwise you'll have to allocate a separate buffer and use WideCharToMultiByte() for conversion.

9
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: