g4tools  5.4.0
get_lines
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_get_lines
5 #define tools_get_lines
6 
7 #include "cstr"
8 
9 #include <string>
10 #include <vector>
11 
12 namespace tools {
13 
14 inline void get_lines(const std::string& a_string,std::vector<std::string>& a_lines){
15  // a_string is a list separated by "\n" or "\\n".
16  // For "xxx\n\nxxx", {"xxx","","xxx"} will be created.
17  // WARNING : if a_string is a Windows file name, it may
18  // contains a \n which is not a delimiter ; like ..\data\ntuples.hbook.
19  a_lines.clear();
20  size_t length = a_string.length();
21  if(!length) return;
22  char* cstring = str_dup(a_string.c_str());
23  if(!cstring) return;
24  size_t pos = 0;
25  length++;
26  for(size_t count=0;count<length;count++) {
27  if( (cstring[count]=='\n') ||
28  (cstring[count]=='\0') ||
29  ( (cstring[count]=='\\') && (cstring[count+1]=='n') ) ) {
30  char shift_one = (cstring[count]=='\n' ? 1 : 0);
31  cstring[count] = '\0';
32  a_lines.push_back(cstring+pos);
33  if(shift_one==1) {
34  pos = count+1;
35  } else {
36  pos = count+2;
37  count++;
38  }
39  }
40  }
41  str_del(cstring);
42 }
43 
44 }
45 
46 #endif
tools::get_lines
void get_lines(const std::string &a_string, std::vector< std::string > &a_lines)
Definition: get_lines:14
cstr
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::str_del
void str_del(char *&a_cstr)
Definition: cstr:66
tools::str_dup
char * str_dup(const char *a_cstr)
Definition: cstr:30