C++字符串到 int 而不使用 atoi() 或 stoi()
C++ string to int without using atoi() or stoi()
嗨,我是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);
}
我认为你可以编写自己的stoi函数。这是我的代码,我已经测试过了,非常简单。
long stoi(const char *s)
{
long i;
i = 0;
while(*s >= '0' && *s <= '9')
{
i = i * 10 + (*s - '0');
s++;
}
return i;
}
你已经在使用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;
}
相关文章:
- 有人知道为什么在开关中使用stoi函数会返回恒定的错误吗
- std::stoi 的版本拒绝任何非数字
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- atoi() 在应用于大型命令行参数时会产生不正确的值
- std::stoi 只转换前几个字符
- 编译时间文本到数字转换 (atoi)
- 使用 stoi 功能进行异常处理
- 我一直得到'std::invalid_argument'什么():似乎无缘无故地抛出 stoi 异常?
- 我想使用 std::stoi 函数在 cpp 中将字符串转换为整数,因为我想在字符串中找到不同数字的总和(在下级酶中)
- 为什么此字符串在传递到stoi时被视为无效参数
- C++stoi:这两个重载都无法转换所有参数类型
- 有没有类似于stoi的函数可以用于模板类
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 这段代码在获得错误输入时不会阻止 stoi 运行
- 在抛出 'std::invalid_argument' 的实例后终止调用 what(): stoi (找不到问题所在)
- "terminate called after throwing an instance of std::invalid_argument' what(): stoi ?"
- atoi() 表示int128_t类型
- std::stoi 的基本参数
- 为什么 stoi/atoi 为我提供编译器错误
- C++字符串到 int 而不使用 atoi() 或 stoi()