【发布时间】:2011-05-01 14:12:52
【问题描述】:
char operators[] = "+-*/^(";
char* input = new char[100];
char* output = new char[100];
char* operadores = new char[100];
char* pch = input;
char* pch2 = input;
cout << "Expresion: " <<endl; cin.getline(input,100);
cout << input <<endl;
pch2 = strpbrk (pch2, operators);
pch = strtok (pch, "+-*/^(");
while (pch != NULL){
strcat (output, pch);
pch = strtok (NULL, "+-*/^(");
strcat (operadores, pch2);
}
cout << "Salida: " << output <<endl;
cout << "Operadores: " << operadores <<endl;
cout << "Entrada: " << input <<endl;
cout << "pch2 = " << pch2 <<endl;
嗨!我的问题是函数 strpbrk 不起作用,它不返回 NULL,我已经证明了这一点。但我需要一个 char 放入堆栈,cout 没有显示 pch2 指向的字符。
【问题讨论】:
-
既然您已经证明
strpbrk不起作用,我建议您向您的编译器供应商提交一份错误报告。这是您发现的一个非常严重的故障。 -
哦,我怀疑是编译器的错。显然,C/C++ 是被破坏的语言,任何人都不应该使用它们。 ;p
-
更严重的是,
strpbrk显然不是这里的问题。问题在于你如何称呼它。您准备好接受涉及修复strpbrk使用的解决方案了吗?我也想知道你为什么使用 C 字符串而不是 std::string。