Mailinglist Archive: opensuse-programming-de (184 mails)
| < Previous | Next > |
C++ Vector -> C Array
- From: Bastian Schern <bschern01@xxxxxx>
- Date: Mon, 06 Oct 2003 14:59:44 +0200
- Message-id: <3F816740.5040201@xxxxxx>
Hallo,
gibt es eine einfache Möglichkeit einen C++ Vector an eine Funktion zu übergeben, die ein C Array erwartet.
So wie z.B. bei der Klasse string:
string text = "Hallo";
printf( "%s", text.c_str() );
Man kann auch text.data() machen, dann wird aber '\0' am ende abgeschnitten und man kann den string dann nicht mehr ausgeben (weil es ja kein C-String mehr ist).
Ich benötige das aber nicht für strings, sondern für ganz normale Arrays.
Beispiel:
vector<double> packet_lengths( total_packets );
for( pkt_num_t i=0; i<total_packets; i++ ) {
pcap_next( handle, &header );
packet_lengths[i] = (double)header.len;
}
double mean = gsl_stats_mean( packet_lengths.data(), 1,
packet_lengths.size() );
Die Funktion gsl_stats_mean( ... ) benötigt leider ein C-Array.
Vielen Dank für eure Hilfe
Bastian
gibt es eine einfache Möglichkeit einen C++ Vector an eine Funktion zu übergeben, die ein C Array erwartet.
So wie z.B. bei der Klasse string:
string text = "Hallo";
printf( "%s", text.c_str() );
Man kann auch text.data() machen, dann wird aber '\0' am ende abgeschnitten und man kann den string dann nicht mehr ausgeben (weil es ja kein C-String mehr ist).
Ich benötige das aber nicht für strings, sondern für ganz normale Arrays.
Beispiel:
vector<double> packet_lengths( total_packets );
for( pkt_num_t i=0; i<total_packets; i++ ) {
pcap_next( handle, &header );
packet_lengths[i] = (double)header.len;
}
double mean = gsl_stats_mean( packet_lengths.data(), 1,
packet_lengths.size() );
Die Funktion gsl_stats_mean( ... ) benötigt leider ein C-Array.
Vielen Dank für eure Hilfe
Bastian
| < Previous | Next > |