基本上我的代码不会打印令牌。它只是打印空白。我究竟做错了什么? 我已经就这个问题咨询了很多其他指南,我似乎无法理解我做错了什么。
感谢。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stack>
#include <stdexcept>
#include <string>
#include <stdlib.h>
#include <cstring>
using namespace std;
int main() {
stack<double> s;
string str = "";
getline(cin, str);
char *cstr = new char [str.length()+1];
strcpy(cstr, str.c_str());
char* strp = strtok(cstr, " ");
while (strp != 0){
double n = strtod(cstr, &strp);
s.push(n);
cout << strp << endl;
strp = strtok(0," ");
}
return 0;
}
答案 0 :(得分:0)
此代码适用于我:
int main()
{
stack<double> s;
string str = "";
getline(cin, str);
char *cstr = new char [str.length()+1];
strcpy(cstr, str.c_str());
char* strp = strtok(cstr, " ");
while (strp != NULL)
{
double n = strtod(strp, NULL);
s.push(n);
cout << n << endl;
strp = strtok(NULL, " ");
}
return 0;
}
但是,这真的是C和C ++的痛苦组合。你应该摆脱那些strcpy,strtok和strod函数。请改用istringstream。