您好我是C ++的新手并尝试进行一项任务,我们从格式为
的txt文件中读取大量数据 surname,initial,number1,number2
在有人建议将2个值作为字符串读取然后使用stoi()或atoi()转换为int之前,我请求帮助。这很好用,除了我需要使用这个参数“-std = c ++ 11”进行编译,否则会返回错误。在我自己的计算机上处理“-std = c ++ 11”这不是问题,但不幸的是,我必须提供我的程序的机器没有这个选项。
如果有另一种方法可以将字符串转换为不使用stoi或atoi的int?
到目前为止,这是我的代码。
while (getline(inputFile, line))
{
stringstream linestream(line);
getline(linestream, Surname, ',');
getline(linestream, Initial, ',');
getline(linestream, strnum1, ',');
getline(linestream, strnum2, ',');
number1 = stoi(strnum1);
number2 = stoi(strnum2);
dosomethingwith(Surname, Initial, number1, number2);
}
答案 0 :(得分:4)
我认为你可以编写自己的stoi功能。 这是我的代码,我测试过它,非常简单。
long stoi(const char *s)
{
long i;
i = 0;
while(*s >= '0' && *s <= '9')
{
i = i * 10 + (*s - '0');
s++;
}
return i;
}
答案 1 :(得分:0)
您已经在使用stringstream,它为您提供了这样的“功能”。
void func()
{
std::string strnum1("1");
std::string strnum2("2");
int number1;
int number2;
std::stringstream convert;
convert << strnum1;
convert >> number1;
convert.str(""); // clear the stringstream
convert.clear(); // clear the state flags for another conversion
convert << strnum2;
convert >> number2;
}