gpt4 book ai didi

c++ - 使用 strtok() 和 stringstream 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:42 25 4
gpt4 key购买 nike

我已经研究了一段时间了,它返回的只是“save.rp”文件中不同行的前两个数字,

int characterPosition [2] = {0,0};

string convToStr(char *ch)
{
stringstream ss;
string res;
ss << ch;
ss >> res;
return res;
}

int convToInt(string ch)
{
stringstream ss(ch);
int num;
ss >> num;
return num;
}

void loadSave()
{
string loadPos;
ifstream file("save.rp");
if ((file.is_open())&&(file.good()))
{
getline(file,loadPos);
}
file.close();

char str[] = {*loadPos.c_str()};
char delim[] = "-";
char *result = NULL;
result = strtok(str, delim);
int num = 0;
while (result != NULL)
{
characterPosition[num] = convToInt(convToStr(result));
cout << characterPosition[num] << endl;
result = strtok(NULL, delim);
}
}

“save.rp”文件如下所示:400-2000

它应该分别返回每个数字,在本例中为 400 和 2000。

我是不是在做什么傻事?

最佳答案

这一行

char str[] = {*loadPos.c_str()};

相当于

char str[] = {'4'};

这显然不是你想要的,你想要的

char str[] = "400-2000";

那就这样吧

char str[500];                  // assuming your line length dont exceed 500
strcpy( str, loadPos.c_str() );

关于c++ - 使用 strtok() 和 stringstream 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com