如何在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字符串转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

如何在c ++中将输入输入字符指针

如何在 C++ 中将字符串转换为字符? [复制]

如何将 std::string 转换为 C 风格的字符串 [重复]

将字符串*分配给char * c ++ [关闭]

如何在 C 中更改字符串?

如何使用 c++ 将字符串散列为 int?