【发布时间】:2010-02-19 16:55:53
【问题描述】:
该程序应该通过 cin 接收输入,对其进行标记,然后输出每个输入以向我显示它工作正常。它没有。
程序编译没有错误,并接受输入,但没有输出任何内容。
我做错了什么?
int main(int argc, char* argv[])
{
string input_line;
while(std::cin >> input_line){
char* pch = (char*)malloc( sizeof( char ) *(input_line.length() +1) );
char *p = strtok(pch, " ");
while (p != NULL) {
printf ("Token: %s\n", p);
p = strtok(NULL, " ");
}
}
return 0;
}
我按照这里的代码示例:http://www.cplusplus.com/reference/clibrary/cstring/strtok/
谢谢。
【问题讨论】:
-
附带说明,
sizeof(char)始终为 1(根据定义),new char[]将避免对任何类型的sizeof以及对结果的指针强制转换。 -
您确定要
cin >> input_line(读取一个字符串,在空白处停止)而不是getline(cin, input_line)(读取一个字符串,在换行符处停止)? -
...别忘了释放 pch。或者更好的是,使用 std::vector 而不是手动管理的缓冲区
-
另一方面,您将 C++ 和 C 混合得非常糟糕。混合 stdio 和流 I/O 并不是一个好主意,而且 C++ 具有比 C 更好的字符串处理功能。此外,
strtok()是一个设计非常糟糕的函数。