Non*_*biz 4 c++ casting strtok
我需要将字符串转换为char*以便在strtok_s中使用,并且无法弄明白.c_str()转换为const char*,它是不兼容的.
此外,如果有人可以向我解释为什么第二个strtok_s函数(在循环内)是必要的,这将是一个很大的帮助.为什么我需要明确地推进令牌而不是例如它所处的while循环,它隐式地连续地获取文件的每一行.
while( getline(myFile, line) ) { // Only one line anyway. . . is there a better way?
char * con = line.c_str();
token = strtok_s( con, "#", &next_token);
while ((token != NULL))
{
printf( " %s\n", token );
token = strtok_s( NULL, "#", &next_token);
}
}
Run Code Online (Sandbox Code Playgroud)
相关问题.
使用strdup()该副本const char *由返回c_str()到char *(记得free()它之后)
请注意,strdup()并且free()是C,而不是C++,函数,你最好使用std::string相反的方法.
第二个strtok_s()是必需的,否则你的循环不会终止(token值不会改变).
丹尼尔说,你可以去
strdup(line.c_str());
这比我最初提出的strcpy更好,因为它分配了必要的空间
你不能转换为a,char *因为这会允许你写入std::string内部缓冲区.为了避免使std::string实现可见,这是不允许的.
而不是strtok尝试更多"类似C++"的方式来标记字符串.看到这个问题:
| 归档时间: |
|
| 查看次数: |
7319 次 |
| 最近记录: |