Solved

std::string and strtok

Posted on 2006-07-19
4
369 Views
Last Modified: 2008-02-26
Hi there,

I'm attempting to use strtok with std::string, but unfortunately I can't convert std::string to (char *). I can do (const char *), but strtok ain't accepting that. Any ideas anybody?

Thanks,
Uni
0
Comment
Question by:Unimatrix_001
  • 2
  • 2
4 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 17141028
You even should not use 'c_str()', since 'strtok()' inserts null bytes where it encounters a separator, thus altering the string's buffer, which is not a good idea. Make a copy of the char buffer before you use 'strtok()', e.g.

#include <string>
#include <string.h>

//..

std::string str = "Just some text";

char* buf = strdup(str.c_str());

char* token = strtok(buf," ");

while (token) {

// ...

}

free(buf);
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 17141112
Many thanks! :) Although one question, how come you're using string and string.h together? I thought .h was the older version (and obselete) compared with string?
0
 
LVL 86

Accepted Solution

by:
jkr earned 200 total points
ID: 17141141
No, not in this case. Even though you are right about e.g. 'iostream' and 'iostream.h', 'string.h' is a plain C header file that - among others - has e.g. 'strtok()', 'strdup()' and 'strstr()'. This file is not related to STL's 'string' header.
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 17141165
Ah, okay I understand. Enjoy your points. (-:

Uni
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
mixing C++ & C# in Vis Studio 2013 7 176
computer science syllabus 3 83
c++ syntax question 9 49
DCT of  2D array using fftw in c++ 9 41
Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question