[问题] strtok与getline同时使用

楼主: acgotaku (otaku)   2016-11-06 04:46:50
开发平台(Platform): (Ex: Win10, Linux, ...)
OS X
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
编译器:xcode8
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
各位先进好,我是c++新手,在写一个将ip逐行分开的程式,(1|2|3|4=>1 2 3 4)
现在我遇到的问题是我getline读到的string没办法丢给strtok去处理
喂入的资料(Input):
喂入资料:写入TXT档案
预期的正确结果(Expected Output):
预期出现分割string
错误结果(Wrong Output):
错误结果:Token: line.str()
程式码(Code):(请善用置底文网页, 记得排版)
int main () {
string line;
ifstream myfile ("myfile.txt");
if (myfile.is_open())
{
while ( getline (myfile,line,'\n') )
{
char *p = strtok("line.c_str()", "|");
while (p)
{
printf ("Token: %s\n", p);
p = strtok(NULL, "|");
}
cout << line << '\n';
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
*[36m补充说明(Supplement):*[m
作者: EdisonX (卡卡兽)   2016-11-06 04:50:00
1. strtok(line.c_str(), "|") ; ---> 注意还是会有问题2. 因 strtok 会改变字串内容, 而 line.c_str() 传回的是const char * , 意指不想让你改变, 所以建议先做一份副本(用 strcpy) ,再做 strtok.
作者: steve1012 (steve)   2016-11-06 04:57:00
我会想用find_first_of 自己parse

Links booklink

Contact Us: admin [ a t ] ucptt.com