如何在C ++中使用std :: stoi将c字符串转换为整数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C ++中使用std :: stoi将c字符串转换为整数相关的知识,希望对你有一定的参考价值。
假设我有一个C字符串样本如下:
"-fib 12"
"-fib 12"
"-e 2"
"-pi 4"
我想使用std :: stoi函数将C字符串中的最后一个数字转换为整数变量。我以前从未使用过stoi功能,试图让它工作起来相当混乱。谢谢!
答案
您必须首先通过空格字符之前的非数字数据才能使用std::stoi
。
char* s = "-fib 12";
// Skip until you get to the space character.
char* cp = s;
while ( *cp != ' ' && *cp != ' ') cp++;
// Defensive programming. Make sure your string is not
// malformed. Then, call std::stoi.
if ( *cp == ' ' )
{
int num = std::stoi(cp);
}
另一答案
使用std :: string,你也可以做...
#include <iostream>
#include <string>
int main()
{
std::string str1 = "15";
std::string str2 = "3.14159";
std::string str3 = "714 and words after";
std::string str4 = "anything before shall not work, 2";
int myint1 = std::stoi(str1);
int myint2 = std::stoi(str2);
int myint3 = std::stoi(str3);
// int myint4 = std::stoi(str4); // uncomment to see error: 'std::invalid_argument'
std::cout << myint1 << '
'
<< myint2 << '
'
<< myint3 << '
';
// << myint4 << '
';
}
产量
15
3 //discarded the decimal portion since it is int
714 // discarded characters after the digit
以上是关于如何在C ++中使用std :: stoi将c字符串转换为整数的主要内容,如果未能解决你的问题,请参考以下文章